[英]Parse a JSON string to an array using Jackson
我得到以下 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();
}
}
}
但沒有了解如何循環元素並從中獲取所需的數據。 有誰知道解決方案是什么? 請幫忙。
所以你有一個 JSON 對象列表(在問題中這個列表只包含一個元素)並且你已經定義了可以映射這個單個 json 對象的Data
類,對嗎?
在這種情況下,這個問題實際上是關於如何使用 jackson 解析對象列表:
這是一個答案:
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
...
String str = "...";
List<Data> dataList = objectMapper.readValue(str, new TypeReference<List<Data>>(){});
這樣做Data[] datas = mapper.readValue(new File("sample_json_file.json"), Data[].class);
然后循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.