一尘不染

将具有重复键的JSON对象转换为JSON数组

json

我有一个从包含重复密钥的数据库中获取的JSON字符串。我想通过将重复键的值组合到数组中来删除重复键。

例如

输入项

{
"a":"b",
"c":"d",
"c":"e",
"f":"g"
}

输出量

{
"a":"b",
"c":["d","e"],
"f":"g"
}

实际数据是一个可能嵌套的大文件。我不会提前知道有多少对。

我需要为此使用Java。org.json由于重复的键而引发异常,gson可以解析该字符串,但是每个重复的键都会覆盖最后一个。我需要保留所有数据。

如果可能的话,我想不编辑任何库代码就这样做


阅读 261

收藏
2020-07-27

共1个答案

一尘不染

从今天开始,org.json库版本20170516提供accumulate()了将重复的键条目存储到JSONArray

JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("a", "b");
jsonObject.accumulate("c", "d");
jsonObject.accumulate("c", "e");
jsonObject.accumulate("f", "g");
System.out.println(jsonObject);

输出:

{  
    "a":"b",  
    "c":["d","e"],  
    "f":"g"  
}
2020-07-27