json-lib将json格式的字符串,转化为java对象的实例
json格式字符串中的日期是按照‘yyyy-MM-ddHH:mm:ss'格式,如果按照常规的转换为对象,该日期则解析成当前系统时间
JSONObjectjson=JSONObject.fromObject(data); Dispatchplandp=(Dispatchplan)JSONObject.toBean(json,Dispatchplan.class);
导致原因JSONObject可能无法识别日期格式,做了以下修改就解决
Dispatchplandp=newDispatchplan();
JSONObjectjson=JSONObject.fromObject(data);
String[]dateFormats=newString[]{"yyyy-MM-ddHH:mm:ss"};
JSONUtils.getMorpherRegistry().registerMorpher(newDateMorpher(dateFormats));
dp=(Dispatchplan)JSONObject.toBean(json,Dispatchplan.class);
下面我们来讨论一个问题:
将要转化复杂类型的对象的时候,有点需要注意的地方。
例子如下:
publicclassA{
privateListlist;
publicListgetList(){
returnlist;
}
publicvoidsetList(Listlist){
this.list=list;
}
publicstaticvoidmain(String[]args){
JSONObjectjson=JSONObject.fromObject("{list:[{name:'Tom',age:999}]}");
Aj=(A)JSONObject.toBean(json,A.class);
System.out.println(j);
}
}
classB{
privateintage;
privateStringname;
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
执行之后A对象的List里装的不是B对象而是MorphDynaBean?如何让json对象直接封装成需要的bean对象?
答案如下:
你需要在JSONObject.toBean的时候把list的元素类型当成参数传进去。代码如下,你肯定看得懂
MapclassMap=newHashMap (); classMap.put("list",B.class); Aj=(A)JSONObject.toBean(json,A.class,classMap);
以上这篇json-lib将json格式的字符串,转化为java对象的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。