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对象的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。