1. 程式人生 > >Json數據解析

Json數據解析

變量 http shm alt cti 獲取json 添加 內部 val

Json數據解析

場景模擬

假如現在根據一個接口得到了一串Json字符串,我們要獲取Json字符串中某一個數字,Json字符串如下

{
    "result": {
        "offset": 0,
        "timeSpan": [
            "2018/10/16",
            "2018/10/15"
        ],
        "fields": [
            "app_name",
            "time",
            "user_count"
        ],
        "total": 11,
        "end": 0,
        "sum": [
            [
                {
                    "val": 238285,
                    "flag": -1
                }
            ],
            [
                796749
            ]
        ],
        "pageSum": []
    }
}

現在要獲取 sum中val 對應的238285 這個值

準備

使用fastJson 阿裏的

添加maven依賴

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.9</version>
        </dependency>

解析

  1. 轉換成JSONObject對象
String result = .....(就上面那個字符串)
JSONObject hashMap = JSONObject.parseObject(result);

得到是一個result為JSONObject的對象,如圖1.1

技術分享圖片

? 圖1.1

這個JSONOBject內部有一個Map的成員變量

  1. 獲取key為result,value為JSONObject的對象
JSONObject jsonObjectResult = hashMap.getJSONObject("result");

得到的JSONObjectResult如下圖1.2:

技術分享圖片

? 圖1.2

查看HashMap為sum的數據類型如圖1.3

技術分享圖片

? 圖1.3

  1. 獲取key為sum,value為JSONArray的對象
JSONArray jsonArraySum = jsonObjectResult.getJSONArray("sum");

得到的jsonArraySum如下圖1.4

技術分享圖片

? 圖1.4

  1. 獲取第一個JSONArray
JSONArray jsonArraySum0 = jsonArraySum.getJSONArray(0);

得到jsonArraySum0如圖1.5

技術分享圖片

? 圖1.5

  1. 獲取第一個JSONObjecy
JSONObject jsonObject0 = jsonArraySum0.getJSONObject(0);

得到jsonObject0如下圖1.6

技術分享圖片

? 圖1.6

  1. 獲取key為val,value等於238285
String value = jsonObject0.get("val").toString()

得到value如下圖1.7

技術分享圖片

? 圖1.7

源代碼


String json = ...(上面的Json字符串)
String value =  JSONObject.parseObject(result)
                    .getJSONObject("result")
                    .getJSONArray("sum")
                    .getJSONArray(0)
                    .getJSONObject(0)
                    .get("val").toString();

Json數據解析