fastJson 不使用JavaBean解析复杂json
json如下
{
"data":{
"items":[
{
"itemstring":"手机",
"itemcoord":{"x":0,"y":100,"width":40,"height":20},
},
{
"itemstring":"电脑",
"itemcoord":{"x":0,"y":100,"width":40,"height":20},
}
],
"session_id":"",
},
"code":0,
"message":"OK"
}
此时如果我们想要取到items里面的itemstring,一般的方式是建javabean,但如果数据集字段比较多的情况下javabean还是挺费事的,比如我现在items有50个字段,itemcoord里面又有50个字段,我想要itemcoord里面的width,你就得建两个50成员的javabean,能解析,但挺累的,这里可以解析成List<Map<String,Object>>的数据形式
废话不多说,直接上代码
public static void main(String[] args) {
/* String url = "http://220.160.52.213:20073/spring-shiro-training/api/open/ent_eval_credit";
String param="?offset=1&limit=10";
System.out.println(doPost(url,param));*/
String json = "{\"data\":{\"items\":[{\"itemstring\":\"手机\",\"itemcoord\":{\"x\":0,\"y\":100,\"width\":40,\"height\":20},},{\"itemstring\":\"电脑\",\"itemcoord\":{\"x\":0,\"y\":100,\"width\":40,\"height\":20},}],\"session_id\":\"\",},\"code\":0,\"message\":\"OK\"}";
//转换JSONObject对象
JSONObject jsonObject = JSON.parseObject(json);
//取出第一层并转换JSONObject对象
JSONObject dataJsonObject = JSON.parseObject(jsonObject.getString("data"));
//获取内部的items
JSONArray list = dataJsonObject.getJSONArray("items");
//解析成集合类
String js=JSONObject.toJSONString(list, SerializerFeature.WriteClassName);
List<Map> collection = JSONObject.parseArray(js, Map.class);
//将解析出的集合转换成JSON字符串,目的是把List<Map>转成List<Map<String,Object>>
String collectionJson=JSON.toJSONString(collection);
List<Map<String,Object>> listObjectFir = (List<Map<String,Object>>) JSONArray.parse(collectionJson);
System.out.println(listObjectFir.get(0).get("itemstring"));
}