gpt4 book ai didi

java - Jackson - 获取数组内的条目

转载 作者:行者123 更新时间:2023-12-02 08:41:25 26 4
gpt4 key购买 nike

我有以下 JSON 源:

{
"my-systems": [{
"SYSTEM_A": [{
"parameter-name": "a_param1",
"parameter-display-name": "parameter 1",
"optional": "true"
},
{
"parameter-name": "a_param2",
"parameter-display-name": "Parameter 2",
"optional": "false"
}
]
},
{
"SYSTEM_B": [{
"parameter-name": "b_param1",
"parameter-display-name": "Parameter 1",
"optional": "true"
},
{
"parameter-name": "b_param2",
"parameter-display-name": "Parameter 2",
"optional": "false"
}
]
}
]
}

我尝试将其读入 Map<String, SystemParameter[]> 的 map 中.
我有这段代码,我真的不确定它是否是实现我的目标的最佳方法。

ArrayNode systemsArr = (ArrayNode)jsonDoc.get("my-systems");
if(systemsArr!= null && !systemsArr.isEmpty()){
for(JsonNode systemNode : systemsArr ){
ObjectNode systemObj = (ObjectNode)systemNode;

System.out.println(systemObj .textValue());
}
}

这是一种有效的方法吗?如何获取系统名称(SYSTEM_A、SYSTEM_B)并将其中包含的参数转换为参数对象数组?

最佳答案

您只需要在依赖项中使用 jackson-databind 和 jackson-annotations jar,您应该能够运行下面的代码

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonParsing {

public static void main(String[] args) throws IOException {
String jsonFilePath = "src/main/resources/source.json"; // JSON File Path
MySystems mySystems = new ObjectMapper().readValue(new File(jsonFilePath),MySystems.class);

Map<String,SystemParameter[]> outputMap = new HashMap<>();
for (Map<String,List<SystemParameter>> map :mySystems.mySystems) {
for (String key :map.keySet()) {
outputMap.put(key, map.get(key).toArray(new SystemParameter[0]));
}
}
System.out.println(outputMap);

}
}

class MySystems {
@JsonProperty("my-systems")
List<Map<String,List<SystemParameter>>> mySystems;
}

class SystemParameter {
@JsonProperty("parameter-name")
String paramName;

@JsonProperty("parameter-display-name")
String paramDispName;

@JsonProperty("optional")
String optional;
}

关于java - Jackson - 获取数组内的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61369568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com