![](/img/trans.png)
[英]Convert Nested JSONObject to JSONArray and then PUT it into HashMap in java
[英]How to convert a nested jsonObject to a hashMap with updated field names in java with Jackson?
UPDATE
:更新了代碼庫,現在我得到了鍵值對,但是在添加鍵|值對時遞歸邏輯存在一些問題。 需要幫助修復此代碼。 OLD ISSUE
:我一直在嘗試將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 字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.