Jackson解析多层嵌套

该博客详细介绍了如何使用Jackson库解析包含多层嵌套的JSON数据,包括从顶层的'result'字段获取特定信息,如'2016-09-20',再到'data'字段中获取如'北京'等相关条目,以及进一步通过for循环遍历'list'字段得到更多详细数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

json格式如下:

json整体目录结构


1:获取result内的数据

String jsonStr = "";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonStr );

String resultJson = node.get("result").toString();
JsonNode resultNode = mapper.readTree(resultJson);
System.out.println(resultNode.get("updatetime"));

输出“2016-09-20”


2:获取data内的数据

resultNode.get("data").get(0).get("province");
resultNode.get("data").get(0).get("lsprefix");
resultNode.get("data").get(0).get("carorg");
resultNode.get("data").get(0).get("frameno");
resultNode.get("data").get(0).get("engineno");
输出:

"北京"
"京"
"beijing"
"0"
"100"

3:for循环获取list内的数据

            ObjectMapper mapper = new ObjectMapper();
            JsonNode node = mapper.readTree(jsonStr);

            String resultJson = node.get("result").toString();
            JsonNode resultNode = mapper.readTree(resultJson);

            String dataJson = resultNode.get("data").toString();
            JsonNode dataNode = mapper.readTree(dataJson);

            for (int i = 0; i <= 30; i++) {
                JsonNode list = dataNode.get(i).get("list");
                if (list != null) {
                    for (int j = 0; j < list.size(); j++) {
                        Citys c = new Citys();
                        c.setName(list.get(j).get("city").toString().replaceAll("\"", ""));
                        c.setCityNum(list.get(j).get("lsnum").toString().replaceAll("\"", ""));
                        //简称
                        c.setAbbr(list.get(j).get("lsprefix").toString().replaceAll("\"", ""));
                        c.setCarorg(list.get(j).get("carorg").toString().replaceAll("\"", ""));
                        c.setFrameno(list.get(j).get("frameno").toString().replaceAll("\"", ""));
                        c.setEngineno(list.get(j).get("engineno").toString().replaceAll("\"", ""));

                        carMapper.insertInfo(c);
                    }
                } else {
                    System.out.println("应该是直辖市,没有list" + dataNode.get(i).get("province"));
                }
            }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值