使用FastJson解析Json数据
fastjson 是一个性能极好的用 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
主要特点:
-
强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
-
零依赖(没有依赖其它任何类库除了JDK)
一 、生成Json:
JavaBean、List<JavaBean>、List<String>、List<Map<String,Object>>
1 String jsonString = JSON.toJSONString(obj);
二、解析Json:
(1)JavaBean
1 Class class= JSON.parseObject(jsonString, Class.class);
(2)List<JavaBean>
1 List<Class> class=JSON.parseArray((jsonString, Class.class);
(3)List<String>
1 List<String> listString = JSON.parseArray(jsonString, String.class);
(4)List<Map<String,Object>>
List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
现有这样的json数据
{ "totalRecords": 2615, "result": { "code": "200", "status": "success" }, "list": [ { "unuAbnId": "0bcd930f-014c-1000-e003-5f160a0d0114", "entNo": "1c2e4ca8-00fa-1000-e000-74590a76bf0f", "regNO": "442000600169663", "entName": "x", "entType": "9910 ", "speCause": "3", "abnTime": "Mar 13, 2015 12:00:00 AM", "decOrg": "442020", "entNameUrl": "<a href=\".. ", "auditingFileNo": "15000684990326", "abnormalID": "fd74013d-014b-1000-e00a-72970a0d0114" }, {}, {} ], "pageNo": 1, "pageSize": 8, "url": "main/abnInfoPage", "selList": [ { "unuAbnId": "0bcd930f-014c-1000-e003-5f0f0a0d0114", "entNo": "16da9629-0131-1000-e005-3effc0a803a8", "regNO": "442000602187424", "entName": "x", "entType": "9910 ", "speCause": "3", "abnTime": "Mar 13, 2015 12:00:00 AM", "decOrg": "442020", "entNameUrl": "<a href=\"..\">", "auditingFileNo": "15000684990319", "abnormalID": "fd74013d-014b-1000-e00a-72970a0d0114" }, {}, {} ], "topPageNo": 1, "totalPages": 327, "previousPageNo": 0, "nextPageNo": 2, "bottomPageNo": 327 }
其中list含有2615条数据,selList含有8条数据,目标是提取selList中entNameUrl的链接(不含a href=)
外层是JSONObject,里面的list和selList是JSONArrary,再里面是JSONObject。其中的result也是JSONObject
JSONObject jsonObj = JSON.parseObject(rawText); JSONArray result = jsonObj.getJSONArray("selList"); List<Link> links= JSON.parseArray(result.toJSONString(),Link.class);
其中Link类中要有entNameUrl这个属性,并且setter和getter方法。
在setter方法中可以进一步进行处理
public void setEntNameUrl(String entNameUrl) { this.entNameUrl =Html.create(entNameUrl).links().get(); }
这里使用了自定方法,其功能就是取出字符串中的链接。
Link类中可以包含abnTime、entName、regNO等属性和对应的getter和setter方法,FastJson能自动映射。
通过下面的方法也可以处理:
JSONObject jsonObj = new JSONObject(rawText); JSONArray jsonArray = result .getJSONArray("selList"); for (int i = 0; i < jsonArray.length; i++) { }
原文出自:http://blog.csdn.net/g1apassz/article/details/44456293

浙公网安备 33010602011771号