今天在写爬虫的时候,抓取到了一个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"。
将它们全部获取到后再存入类中。