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