fastjson 是一个性能极好的用 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
主要特点:
- 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
- 强大(支持普通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数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
{ "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
1
2
3
|
JSONObject jsonObj = JSON.parseObject(rawText); JSONArray result = jsonObj.getJSONArray( "selList" ); List<Link> links= JSON.parseArray(result.toJSONString(),Link. class ); |
其中Link类中要有entNameUrl这个属性,并且setter和getter方法。
在setter方法中可以进一步进行处理
1
2
3
|
public void setEntNameUrl(String entNameUrl) { this .entNameUrl =Html.create(entNameUrl).links().get(); } |
这里使用了自定方法,其功能就是取出字符串中的链接。
Link类中可以包含abnTime、entName、regNO等属性和对应的getter和setter方法,FastJson能自动映射。
通过下面的方法也可以处理:
1
2
3
4
|
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