java中使用net.sf.json对json进行解析
net.sf.json依赖的包很多。
有commons-collections,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph-1.0.5.jar,morph-1.1.1.jar
<SPANstyle="FONT-SIZE:medium">/**
*从一个JSON对象字符格式中得到一个java对象,形如:
*{"id":idValue,"name":nameValue,"aBean":{"aBeanId":aBeanIdValue,...}}
*@paramobject
*@paramclazz
*@return
*/
publicstaticObjectgetDTO(StringjsonString,Classclazz){
JSONObjectjsonObject=null;
try{
setDataFormat2JAVA();
jsonObject=JSONObject.fromObject(jsonString);
}catch(Exceptione){
e.printStackTrace();
}
returnJSONObject.toBean(jsonObject,clazz);
}
/**
*从一个JSON对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:
*{"id":idValue,"name":nameValue,"aBean":{"aBeanId":aBeanIdValue,...},
*beansList:[{},{},...]}
*@paramjsonString
*@paramclazz
*@parammap集合属性的类型(key:集合属性名,value:集合属性类型class)eg:("beansList":Bean.class)
*@return
*/
publicstaticObjectgetDTO(StringjsonString,Classclazz,Mapmap){
JSONObjectjsonObject=null;
try{
setDataFormat2JAVA();
jsonObject=JSONObject.fromObject(jsonString);
}catch(Exceptione){
e.printStackTrace();
}
returnJSONObject.toBean(jsonObject,clazz,map);
}
/**
*从一个JSON数组得到一个java对象数组,形如:
*[{"id":idValue,"name":nameValue},{"id":idValue,"name":nameValue},...]
*@paramobject
*@paramclazz
*@return
*/
publicstaticObject[]getDTOArray(StringjsonString,Classclazz){
setDataFormat2JAVA();
JSONArrayarray=JSONArray.fromObject(jsonString);
Object[]obj=newObject[array.size()];
for(inti=0;i<array.size();i++){
JSONObjectjsonObject=array.getJSONObject(i);
obj[i]=JSONObject.toBean(jsonObject,clazz);
}
returnobj;
}
/**
*从一个JSON数组得到一个java对象数组,形如:
*[{"id":idValue,"name":nameValue},{"id":idValue,"name":nameValue},...]
*@paramobject
*@paramclazz
*@parammap
*@return
*/
publicstaticObject[]getDTOArray(StringjsonString,Classclazz,Mapmap){
setDataFormat2JAVA();
JSONArrayarray=JSONArray.fromObject(jsonString);
Object[]obj=newObject[array.size()];
for(inti=0;i<array.size();i++){
JSONObjectjsonObject=array.getJSONObject(i);
obj[i]=JSONObject.toBean(jsonObject,clazz,map);
}
returnobj;
}
/**
*从一个JSON数组得到一个java对象集合
*@paramobject
*@paramclazz
*@return
*/
publicstaticListgetDTOList(StringjsonString,Classclazz){
setDataFormat2JAVA();
JSONArrayarray=JSONArray.fromObject(jsonString);
Listlist=newArrayList();
for(Iteratoriter=array.iterator();iter.hasNext();){
JSONObjectjsonObject=(JSONObject)iter.next();
list.add(JSONObject.toBean(jsonObject,clazz));
}
returnlist;
}
/**
*从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性
*@paramobject
*@paramclazz
*@parammap集合属性的类型
*@return
*/
publicstaticListgetDTOList(StringjsonString,Classclazz,Mapmap){
setDataFormat2JAVA();
JSONArrayarray=JSONArray.fromObject(jsonString);
Listlist=newArrayList();
for(Iteratoriter=array.iterator();iter.hasNext();){
JSONObjectjsonObject=(JSONObject)iter.next();
list.add(JSONObject.toBean(jsonObject,clazz,map));
}
returnlist;
}
/**
*从jsonHASH表达式中获取一个map,该map支持嵌套功能
*形如:{"id":"johncon","name":"小强"}
*注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap
*@paramobject
*@return
*/
publicstaticMapgetMapFromJson(StringjsonString){
setDataFormat2JAVA();
JSONObjectjsonObject=JSONObject.fromObject(jsonString);
Mapmap=newHashMap();
for(Iteratoriter=jsonObject.keys();iter.hasNext();){
Stringkey=(String)iter.next();
map.put(key,jsonObject.get(key));
}
returnmap;
}
/**
*从json数组中得到相应java数组
*json形如:["123","456"]
*@paramjsonString
*@return
*/
publicstaticObject[]getObjectArrayFromJson(StringjsonString){
JSONArrayjsonArray=JSONArray.fromObject(jsonString);
returnjsonArray.toArray();
}
/**
*把数据对象转换成json字符串
*DTO对象形如:{"id":idValue,"name":nameValue,...}
*数组对象形如:[{},{},{},...]
*map对象形如:{key1:{"id":idValue,"name":nameValue,...},key2:{},...}
*@paramobject
*@return
*/
publicstaticStringgetJSONString(Objectobject)throwsException{
StringjsonString=null;
//日期值处理器
JsonConfigjsonConfig=newJsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class,newJsonDateValueProcessor());
if(object!=null){
if(objectinstanceofCollection||objectinstanceofObject[]){
jsonString=JSONArray.fromObject(object,jsonConfig).toString();
}else{
jsonString=JSONObject.fromObject(object,jsonConfig).toString();
}
}
returnjsonString==null?"{}":jsonString;
}</SPAN>