JSON 与JAVA对象之间的转换
2013-07-30 16:07
246 查看
JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换。
一、对普通类型的JSON模式的转换
一般JSON为最普通的String类型组成,没有其它Data或Object等这种特殊类形,具体例子如下:
JSON:
jsonString = {"name":"jack","sex":"men","age":23};
JAVA BEAN:
public class Person{
private String name;
private String sex;
private Integer age;
...omit get or set method...
}
现在如果我们想把上面的JSON格式转为Java bean类,常用方法为:
jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class);
这样返回来的数据就为Person类型的实例,在JSONObject.toBean();的方法签名中第一个参数为jsonObject对象,第二个参数为要转换后的JAVA BEAN的class类。
二、对有Date或List类型的转换
JSON:
jsonString = {"name":"jack","sex":"women","birthday":"2010-06-12","address":[{"officeAttr":"NEWS RORK","HomeAttr":"beijing"},{"officeAttr":"taiyuan","HomeAttr":"hongkong"}]};
JAVA BEAN:
public class Person{
private String name;
private String sex;
private Date birthday;
private List<Address> address;
...omit get or set method...
}
public class Address{
private String officeAttr;
private String homeAttr;
...omit get or set method...
}
现在如果我们想把上面的JSON格式转为Java bean类,常用方法为:
JSONUtils.getMorpherRegistry().registerMorpher(new JsonDateValueProcessor(new String[] { "yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" }));
Map<String,Class> map = new HashMap<String,Class>();
map.put("address",Address.class); //map中的key值为json中list的key值,value为Address的class类对象
jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class, map);
public class JsonDateValueProcessor implements JsonValueProcessor {
private String format = "yyyy-MM-dd HH:mm:ss";
public JsonDateValueProcessor() {
}
public JsonDateValueProcessor(String format) {
this.format = format;
}
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value, jsonConfig);
}
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
return process(value, jsonConfig);
}
private Object process( Object value, JsonConfig jsonConfig ) {
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value == null ? null : value.toString();
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
}
一、对普通类型的JSON模式的转换
一般JSON为最普通的String类型组成,没有其它Data或Object等这种特殊类形,具体例子如下:
JSON:
jsonString = {"name":"jack","sex":"men","age":23};
JAVA BEAN:
public class Person{
private String name;
private String sex;
private Integer age;
...omit get or set method...
}
现在如果我们想把上面的JSON格式转为Java bean类,常用方法为:
jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class);
这样返回来的数据就为Person类型的实例,在JSONObject.toBean();的方法签名中第一个参数为jsonObject对象,第二个参数为要转换后的JAVA BEAN的class类。
二、对有Date或List类型的转换
JSON:
jsonString = {"name":"jack","sex":"women","birthday":"2010-06-12","address":[{"officeAttr":"NEWS RORK","HomeAttr":"beijing"},{"officeAttr":"taiyuan","HomeAttr":"hongkong"}]};
JAVA BEAN:
public class Person{
private String name;
private String sex;
private Date birthday;
private List<Address> address;
...omit get or set method...
}
public class Address{
private String officeAttr;
private String homeAttr;
...omit get or set method...
}
现在如果我们想把上面的JSON格式转为Java bean类,常用方法为:
JSONUtils.getMorpherRegistry().registerMorpher(new JsonDateValueProcessor(new String[] { "yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" }));
Map<String,Class> map = new HashMap<String,Class>();
map.put("address",Address.class); //map中的key值为json中list的key值,value为Address的class类对象
jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class, map);
public class JsonDateValueProcessor implements JsonValueProcessor {
private String format = "yyyy-MM-dd HH:mm:ss";
public JsonDateValueProcessor() {
}
public JsonDateValueProcessor(String format) {
this.format = format;
}
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value, jsonConfig);
}
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
return process(value, jsonConfig);
}
private Object process( Object value, JsonConfig jsonConfig ) {
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value == null ? null : value.toString();
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
}
相关文章推荐
- java对象和json对象之间互相转换
- 非标准json,标准json,json字符串与js对象,Java对象之间的相互转换
- java对象和json对象之间互相转换
- java对象和json对象之间互相转换例子
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
- java对象和json对象之间互相转换(中)
- java对象和json对象之间互相转换(下)
- JSON的使用及与java对象之间的转换介绍
- java对象和json对象之间互相转换
- JSON 字符串 与 java 对象之间互相转换
- Json-lib实现json,java对象,xml之间相互转换 .
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
- java 中json与对象之间的转换2
- JSON与java对象之间的相互转换
- Java之使用json-lib进行对象与json字符串之间的转换
- jsontools实现java对象与json值之间互相转换
- FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
- [JSON-lib框架]使java对象、json、xml之间的转换不再困难
- Java中Json字符串与对象之间的相互转换
- 使用JAVA将任意封装对象转换成JSON、XML文件与对象之间的相互转化