小编Laz*_*ang的帖子

使用 Gson 或 Jackson 压平 JSON 字符串,将包含各个级别键值的键制作为 Map<String, String>

我有一个关于使用 Gson 或 Jackson 将 JSON 字符串展平为 Map 的增强问题。

我的场景包含重复的键,因此上述问题中的解决方案会导致一些重复的键被覆盖。所以我正在考虑通过将每个级别的密钥组合在一起来构造密钥。

那么如何实现呢?

例如:

{
    "id" : "123",
    "name" : "Tom",
    "class" : {
        "subject" : "Math",
        "teacher" : "Jack"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想获取地图:

"id" : "123",
"name" : "Tom",
"class.subject" : "Math",
"class.teacher" : "Jack"
Run Code Online (Sandbox Code Playgroud)

**********************更新解决方案************************ **************

根据@Manos Nikolaidis的回答,我能够通过考虑ArrayNode来实现以下解决方案。

public void processJsonString(String jsonString) throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonString);
    processArrayNode(arrayNode);
}

private void processObjectNode(JsonNode jsonNode) {
    Map<String, String> result = new HashMap<>();
    Iterator<Map.Entry<String, …
Run Code Online (Sandbox Code Playgroud)

java json jackson gson

5
推荐指数
1
解决办法
8252
查看次数

标签 统计

gson ×1

jackson ×1

java ×1

json ×1