【Java】如何在复杂的JSON数据中提取需要的字段

今天在写爬虫的时候,抓取到了一个xhr类型包,是一大串的json格式字符串,其中我想要的两百道题目数据被层层嵌套。

我想要的数据就是subjectTitle,以及answerList下的两个选项。

在pom.xml文件中添加以下依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.5</version>
</dependency>

代码如下 

public void convert(String json) throws JsonProcessingException {
        ObjectMapper objectMapper=new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(json);
        JsonNode subjectList  = jsonNode.get("data").get("subjectList");
        for (int i = 1; i < subjectList.size(); i++) {
            JsonNode jn = subjectList.get(i);
            String titleDesc= String.valueOf(jn.get("subjectTitle"));
            JsonNode answerList = jn.get("answerList");
            String OptionA= String.valueOf(answerList.get(0).get("answerName"));
            String OptionB= String.valueOf(answerList.get(1).get("answerName"));
            Topic topic=new Topic(titleDesc,OptionA,OptionB);
            System.out.println(topic);

        }

    }

 JsonNode是Jackson库中用于表示JSON数据的一个抽象数据类型。通过readTree方法,ObjectMapper将JSON字符串解析为一个树形结构,其中每个节点都对应着JSON中的一个元素(对象、数组、值等)

在这个代码中我们直接获取到了"data"下面的201个"subjectList"的JsonNode集合

在每个"subjectList"下还有两个"answerList",其中就有我需要的两个选项"answerName"。

将它们全部获取到后再存入类中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值