您的位置:首页 > 编程语言 > Java开发

复杂的json格式数据转成Java对象

2015-08-12 11:54 609 查看
{
"payCnt":3,
"payInfo":[
{
"payInfoMain":{
"itemCnt":1,
"tranUser":"",
"payer":"宁德"
},
"eBillNo":"2.0120601E+17",
"payInfoItem":[
{
"chrgName":"初级网络工程师报名费",
"msrUint":"元/科",
"chrgCode":"KA460001"
}
]
}
]
}

json中嵌套了String、Map、List类型,用JSONObject来转换:
Map obj = (Map)JSONObject.fromObject(resultMsg);//resultMsg为json串,转成Map对象

System.out.println(obj.get("payCnt"));//获取payCnt数目

List list = (List)obj.get("payInfo");//获取payInfo信息(List类型)

Map t = (Map)list.get(0);//获取第一行记录,Map类型

Map mainMap = (Map)t.get("payInfoMain");//获取payInfo主要信息,Map类型

String user = (String)mainMap.get("payer");//取出payer

注意:1、resultMsg一定是JSON对象,如果是字符串则取法完成转换
2、Map obj = (Map)JSONObject.fromObject(resultMsg);使用的json-lib.jar类库中的方法

2、若resultMsg是json字符串,则借用谷歌公司的Gson的JSONUtil类中的jsonToMap(String jsonstr)方法将字符串转换为Map对象
<1>JSONUtil.java中的将json格式转换成map对象的源码(使用时引入gson.jar类库)
public class JSONUtil{

private static Gson gson=null;
static{
if(gson==null){
gson=new Gson();
}
}
private JSONUtil(){}
/**
* 将json格式转换成map对象
* @param jsonStr
* @return
*/
public static Map<?,?> jsonToMap(String jsonStr){
Map<?,?> objMap=null;
if(gson!=null){
java.lang.reflect.Type type=new com.google.gson.reflect.TypeToken<Map<?,?>>(){}.getType();
objMap=gson.fromJson(jsonStr, type);
}
return objMap;
}
}

例如:将json格式转换成map对象举例:
Map mapObj = JSONUtil.jsonToMap(response);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: