java - 使用 Jackson 将 JSON 字符串解析为数组
问题描述
我收到以下 JSON 响应:
[
{
"name": "Assets",
"id": "assets---0020",
"elements": [
{
"name": "user generates an token",
"steps": [
{
"name": "I have generated a common access token",
"result": {
"duration": 1124800,
"status": "passed"
}
}
]
},
{
"name": "user generates an token",
"steps": [
{
"name": "I have generated a common access token",
"result": {
"duration": 1124800,
"status": "passed"
}
}
]
},
{
"name": "User clicks on dropdown",
"steps": [
{
"name": "User clicks on dropdown and selects option and api response printed",
"result": {
"duration": 1124800,
"status": "failed"
}
}
]
}
]
}
]
我想要以下输出:
Name: Assets
Total - 3
No Of Success - 2
No Of Failed - 1
我一直试图用杰克逊自动解析它,但几乎没有成功。我能够显示:
Name: Assets
下面是我的主要 Java 类的代码:
package JsonToJava.test;
import java.io.File;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsontoJava
{
public static void main( String[] args ) throws JsonMappingException, JsonProcessingException
{
ObjectMapper mapper = new ObjectMapper();
try {
Data[] dataObj = mapper.readValue(new File("data/sample_array_data.json"), Data[].class);
for (Data data: dataObj) {
System.out.println("Track Name--->"+data.getName());
System.out.println("Printing Elements--->"+data.getElements());
System.out.println("------------------------");
}
} catch (JsonMappingException e) {
e.printStackTrace();
}catch (JsonProcessingException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
但没有得到如何循环元素并从中获取所需的数据。有谁知道解决方案是什么?请帮忙。
解决方案
这样做Data[] datas = mapper.readValue(new File("sample_json_file.json"), Data[].class);
然后循环。
推荐阅读
- vim - 如何使用 vimscript 检查文件是否为空?
- excel - 我的数组无法替换和偏移值 VBA
- javascript - 服务器标记格式不正确 - 从 Javascript 运行 ASP 代码
- javascript - 如何理解,然后有效地使用 vue 中的控制台警告和错误?
- sml - 范围函数未通过所有测试
- html - 具有响应式媒体查询布局的 CSS Flexbox 表单
- flask - Swagger 中带有 py2neo 和烧瓶的 API 端点
- caching - 是否有任何 IT 公司提供托管在自己的服务器上而不是 Google 服务器上的 AMP?
- c - 如果我不包含标头,为什么在调用函数之前清除 EAX?
- sql-server - SQL XML 查询节点.值