如何在Jackson中使用Java将嵌套的jsonObject转换为hashMap?

问题描述 投票:0回答:1

我一直在尝试将JSON转换为HashMap,但是由于JSON是嵌套对象,因此在递归调用期间无法保存嵌套字段的键名。下面是示例代码:

    private void toMap(JsonNode jsonNode, Map<String, String> map) {
        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();
            toMap(entry.getValue(), map);
          }
       } else if (jsonNode.isArray()) {
          ArrayNode arrayNode = (ArrayNode) jsonNode;
          for (int i = 0; i < arrayNode.size(); i++) {
            toMap(arrayNode.get(i), map);
          }
       } else if (jsonNode.isValueNode()) {
           //put the key and value to the hashmap.
       }
  }

样本输入:

{"id":"nhikk",
"contact":[{
"id":"uyooo"
},{"id":"oooo"
}],"medium":{
"id":"ioo",
"email":"[email protected]"
}}
output: {k_id=nhikk,N_contact=[{K_id=uyooo},{K_id=oooo}}],medium={K_id=ioo,[email protected]}}

注:我对这个json东西有点陌生:)任何建议都会有所帮助。因为我需要对键名进行一些转换,所以我才采用这种方法。

java json hashmap
1个回答
0
投票

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

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

哪个rawValues是一个json字符串。

© www.soinside.com 2019 - 2024. All rights reserved.