将地图转换为JSON

时间:2016-10-06 08:05:13

标签: java json

我知道之前已经问过这个问题,但这有点不同,我的地图看起来像这样:

key                       value
a.b.c                       1
a.b.d                       2
e.f                         3

生成的JSON看起来像这样:

{
"a": {
    "b": {
        "c": 1,
        "d": 2
    }
},
"e": {
    "f": 3}
}
如果有一些图书馆可以解决这个问题,那将是完美的。

编辑:修复了生成的JSON中的错误

1 个答案:

答案 0 :(得分:2)

你走了:

    Map<String, Integer> myMap = new HashMap<>();
    myMap.put("a.b.c", 1);
    myMap.put("a.b.d", 2);
    myMap.put("e.f", 3);

    JSONObject output = new JSONObject();
    for (String key : myMap.keySet()) {
        String[] parts = key.split("\\.");
        Integer value = myMap.get(key);

        JSONObject currentPointer = output;
        for (int i = 0; i < parts.length; i++) {
            String part = parts[i];
            boolean isLeaf = i == parts.length - 1;
            if (currentPointer.keySet().contains(part)) {
                currentPointer = (JSONObject) currentPointer.get(part);
            } else {
                if (isLeaf) {
                    currentPointer.put(part, value);
                } else {
                    JSONObject newNode = new JSONObject();
                    currentPointer.put(part, newNode);
                    currentPointer = newNode;
                }
            }
        }
    }
    return output.toJSONString();