gpt4 book ai didi

java - 如何使用 Jackson 将嵌套的 jsonObject 转换为具有更新字段名称的 hashMap?

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

更新:更新了代码库,现在我得到了键值对,但添加键|值对时递归逻辑存在一些问题。需要帮助来修复此代码。旧问题:我一直在尝试将 JSON 转换为 HashMap,但由于 JSON 是一个嵌套对象我无法在递归调用期间保存嵌套字段的键名称。以下是更新示例代码:

private HashMap<String,Object> addToMap(JsonNode jsonNode, HashMap<String, Object> map) {
// TODO Auto-generated method stub
if (jsonNode.isObject()) {
ObjectNode objectNode = (ObjectNode) jsonNode;
Iterator<Map.Entry<String, JsonNode>> iter = objectNode.fields();


while (iter.hasNext()) {

Map.Entry<String, JsonNode> entry = iter.next();
parentKey=entry.getKey();
//set key from the mapperLookup.

map.put(parentKey, addToMap(entry.getValue(),new HashMap<String,Object>()));

}
} else if (jsonNode.isArray()) {
ArrayNode arrayNode = (ArrayNode) jsonNode;
for (int i = 0; i < arrayNode.size(); i++) {
//set key from the mapperLookup.
map.put(parentKey, addToMap(arrayNode.get(i),new HashMap<String,Object>()));

}

} else if (jsonNode.isValueNode()) {


ValueNode valueNode = (ValueNode) jsonNode;
//set key from the mapperLookup.
map.put(parentKey, valueNode.asText());
}
return map;

}

示例输入:

{
"S_name":"xyz",
"K_id":"12233",

"N_dum":[{"K_id":"dfff"},{"S_nam":"dfgg"}]


}

预期输出:

{S_name=xyz,
K_id=12233,
N_dum={K_id=dfff,S_nam=dfgg}
}

当前输出:

{S_name={S_name=xyz}, K_id={K_id=12233}, N_dum={N_dum={K_id={K_id=dfff}}, K_id={S_nam={S_nam=dfgg}}}}

改进会有帮助。由于我需要对键名进行一些转换,这就是我采用这种方法的原因。

最佳答案

您可以尝试使用 ObjectMapper,如下所示:

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> dataRaw = null;
dataRaw = mapper.readValue(rawValues, new TypeReference<Map<String, Object>>() {});

其中 rawValues 是一个 json 字符串。

关于java - 如何使用 Jackson 将嵌套的 jsonObject 转换为具有更新字段名称的 hashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60425759/

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