使用FastJson解析Json数据

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数据

{
    "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

posted @ 2016-10-17 10:36  liuluvaliant  阅读(195)  评论(0)    收藏  举报