/**
* @author luxiangxing
* @time 2010-8-28
* @email xiangxingchina@163.com
* @tel 13488766519
*/
package teasoft.common.util;
import java.lang.reflect.Field;
import java.util.HashMap;
import teasoft.user.entity.User;
public class TypeConverterUtil {
/**
* 将一个对象转换成JSON字符串表示,该对象应该符合 JavaBean规范。
* 如果对象的某个属性不是数字或字符串,该属性将被忽略,不会出现在JSON字符串中
*
* @param obj
* 要转换的对象
* @return 描述该对象的JSON字符串,包括属性名与属性值
*/
public static String toJSON(Object obj) {
HashMap<String, String> map = new HashMap<String, String>();
Class c = obj.getClass();
Field[] fields = c.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
String name = fields[i].getName();
try {
fields[i].setAccessible(true);
Object o = fields[i].get(obj);
if (o instanceof Number) {
map.put("\"" + name + "\"", o.toString());
} else if (o instanceof String) {
map.put("\"" + name + "\"", "\"" + o.toString() + "\"");
}
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
}
String s = map.toString();
String str = s.replaceAll("\"=", "\":");
return str;
}
/**
* 将一个对象转换成HashMap,该对象应该符合 JavaBean规范。
* @param obj
* 要转换的对象
* @return 描述该对象的hashMap,包括属性名与属性值
*/
public static HashMap toHashMap(Object obj) {
HashMap<String, String> map = new HashMap<String, String>();
Class c = obj.getClass();
Field[] fields = c.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
String name = fields[i].getName();
try {
fields[i].setAccessible(true);
Object o = fields[i].get(obj);
if ( o!=null && o instanceof Number) {
map.put( name , o.toString());
} else if (o!=null && o instanceof String) {
map.put( name , o.toString() );
}
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
}
return map;
}
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setUserName("lxx");
HashMap hm = TypeConverterUtil.toHashMap(user);
System.out.println(hm.get("id"));
System.out.println(hm.get("userName"));
System.out.println(hm.get("password"));
}
}
分享到:
相关推荐
总结来说,Spring Boot中的自定义消息转换器允许开发者根据需求扩展或覆盖默认的转换逻辑。这在处理特殊数据格式或有特定序列化需求时非常有用。通过实现`HttpMessageConverter`接口并将其添加到转换器列表,我们...
在本文中,我们将深入探讨如何使用Qt框架来创建一个多功能字符串转换器,它不仅具有基本的字符串转换功能,还设计得易于扩展以适应未来的转换需求。这个转换器项目利用了Qt强大的C++库,提供了良好的代码组织和测试...
本文将深入探讨如何实现自定义全局类型转换器,以提升系统的灵活性和扩展性。 Spring MVC中的类型转换主要由`WebDataBinder`类负责,它使用`Converter`或`Formatter`接口进行转换。`Converter`接口用于基本类型的...
这在处理复杂的数据类型,如日期、枚举或自定义对象时尤其有用,因为默认的转换器可能无法满足所有需求。 2. **自定义类型转换器** 当默认的类型转换器无法满足特定需求时,开发者可以编写自定义类型转换器。...
在实际开发中,有时我们需要对默认的类型转换器进行扩展,以满足特定的数据转换需求,例如将前端传入的字符串转换为Date类型。这就是"struts2自定义类型转换器"的主题。 首先,理解Struts2的类型转换机制。当Struts...
转换器在CXF中扮演着关键角色,尤其是在处理不同类型数据之间的转换时,如XML到Java对象,反之亦然。这些转换过程对于确保不同系统间的数据一致性至关重要。 首先,我们需要了解CXF的转换器体系结构。CXF框架中的...
在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...
"tabgible多种语言转换器"是一款强大的编程语言转换工具,能够帮助开发者将源代码从一种编程语言转化为另一种。这个转换器支持的语言包括C++、C#、Java和VB(Visual Basic),这使得它在跨平台开发或者在不同技术栈...
在实际开发中,我们需要将 Java 对象转换为 OMElement,以便在 AXIS2 中使用。下面列举了几个常用的方法: CASE1: 自定义对象生成 OMElement 方法: `Person man = new Person(); man.setName("Warlaze"); man....
通过自定义转换器,开发者可以更好地控制数据的转换过程,确保数据的一致性和正确性,同时也能提高代码的可维护性和可扩展性。在实际项目中,自定义转换器常用于处理复杂的业务逻辑,如货币转换、时间格式化、特殊...
- 在Action类中声明需要转换的属性,并在表单提交时,Struts 2会自动调用相应的类型转换器将字符串数据转换为`CustomDate`对象。 4. **简单实例** 假设我们有一个简单的Web表单,用户输入日期,我们可以通过...
在IT行业中,Mac平台的应用开发是一项重要的技能,尤其是在金融领域,设计一款优秀的汇率转换器能够帮助用户方便快捷地进行货币间的换算。本项目“Mac汇率转换器”就是基于这样的需求,采用Cocoa框架和Objective-...
你可以通过自定义转换器来扩展这个功能,以满足特定的业务需求。例如,如果你需要将一个字符串转换为自定义的复杂对象,可以通过实现`org.apache.struts2.util.TypeConverter`接口来自定义转换逻辑。 第二课时将...
在进制转换器中,可能使用模板来创建一个可以处理不同类型数字(如int、long、double等)的通用转换函数。 3. **成员函数关系**: 在C++中,类的成员函数定义了对象的行为。在这个项目中,成员函数可能包括用于读取...
Struts2转换器是Struts2框架中一个关键的组件,它主要负责将HTTP请求参数与Java对象属性之间进行映射和转换。在Struts2框架中,转换器(Converter)用于处理用户输入数据,确保数据类型正确并进行格式化,以满足应用...
在Struts2中,转换器(Converter)扮演着至关重要的角色,它负责将用户输入的数据转换为模型对象的属性,确保数据类型的一致性和安全性。转换器是Struts2框架中Action类与HTTP请求之间数据绑定的关键组件。 在...
在Spring框架中,集合注入和自定义转换器是两个重要的概念,它们对于应用程序的灵活性和扩展性至关重要。这里,我们将深入探讨这两个主题,并通过实例代码来理解它们。 **集合注入** 集合注入允许我们在Spring配置...
4. **程序设计**:在VB中,编写简繁转换器涉及的主要步骤包括: - 读取输入文件(可能使用`StreamReader`类)。 - 将读取的文本转换为目标格式(简体转繁体或反之),这可能通过调用API函数或库方法完成。 - 将...
基于“tcl to C 转换器”的标签,我们可以推断这个转换器可能最初是设计为将Tcl转换为C语言的,但随着时间的推移,它可能已经扩展了支持C++的能力。C和C++虽然有很多共同之处,但C++提供了一些C语言没有的特性,如类...