我知道之前已经问过这个问题,但这有点不同,我的地图看起来像这样:
key value
a.b.c 1
a.b.d 2
e.f 3
生成的JSON看起来像这样:
{
"a": {
"b": {
"c": 1,
"d": 2
}
},
"e": {
"f": 3}
}
如果有一些图书馆可以解决这个问题,那将是完美的。
编辑:修复了生成的JSON中的错误
答案 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();