Json数据解析

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();
posted @ 2018-10-16 11:18  家里那只橘猫  阅读(1232)  评论(0编辑  收藏  举报