Fastjson解析复杂json数据

Fastjson解析复杂json数据,第1张

大体上分为三步,1.准备json数据。2,导入fastjson包。3,编写代码测试。

一、准备要解析的json数据:(够复杂了吧)

{
"code":200,
"msg":"OK",
"data":
	{
	"result":1,
	"reportForms":
		[ 
			{
				"id":1,
				"title":"testTitle",
				"qNums":0,
				"brief":"This is test form",
				"direction":"Parkinson",
				"result":"0"
			},
			{
				"id":3,
				"title":"testTitle",
				"qNums":0,
				"brief":"This is test form",
				"direction":"Parkinson",
				"result":"0"
			},
			{
			"id":4,
			"title":"testTitle",
			"qNums":0,
			"brief":"This is test form",
			"direction":"Parkinson",
			"result":"0"
			},
			{"id":5,
			"title":"testTitle",
			"qNums":0,
			"brief":"This is test form",
			"direction":"Parkinson",
			"result":"0"
			}
		]
	}
}

二、导入fastjson依赖

	<dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.73version>
	dependency>

三、编写代码解析json

//fastjson解析复杂json
    public static void main(String[] args) {
        String url = "这里是你要访问的url地址";

        //1、获取复杂json数据,这个HttpRequestUtils.getRequest(url)方法是我自己封装的访问接口工具类(要看这个方法的话,文章末尾有链接)
        String request = HttpRequestUtils.getRequest(url);
        //2、先解析第一层json数据
        JSONObject data = JSON.parseObject(request);
        //3、再用解析到的data来解析第二层数据,同样得到jsonobject
        JSONObject data1 = data.getJSONObject("data");
        //4、再套娃(同样是用data1来解析获得第三层json集合)
        JSONArray reportForms = data1.getJSONArray("reportForms");
        //5、如果这不是我们需要的那一层,则接下来可以继续按上面这种思路解析
        //5、如果是我们需要的那一层,则有好多种取值方法:
        //第一种:直接用reportForms的get方法根据下标取出数据,取出的是什么数据类型就用什么接收
        reportForms.size();//获取长度
        Object reportForm = reportForms.get(0);
        System.out.println("第一种解析方式:"+reportForm);

        //第二种解析方式:将上面解析到的jsonArray数据直接用tojavalist方法转成list集合,然后遍历输出
        //注意:参数要带上想要转成的list集合类型ReportForm.class(这个类型是我自己定义的,只要和json数据中对照就可以了),然后遍历输出
        List<ReportForm> list = reportForms.toJavaList(ReportForm.class);
        System.out.println("=======第二种方式======");
        list.forEach(System.out::println);

        //第三种方式:直接将reportForms的迭代器获取到,通过迭代器遍历
        System.out.println("=====第三种方式========");
        Iterator<Object> iterator = reportForms.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

好了,解析结束。

这是:自定义网络接口链接

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/871391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存