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

标签 java json duplicates gson arrays

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

例如

输入

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

输出

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

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

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

如果可能,我想在不编辑任何库代码的情况下执行此操作

最佳答案

截至今天,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"  
}

关于java - 将具有重复键的 JSON 对象转换为 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24416960/

相关文章:

java - 何时在类中实现接口(interface)以及何时实例化接口(interface)的匿名实现

java - 如何使用可扩展的解决方案从 java 中非常大的文件中查找唯一记录?

java - 如何使用 Printwriter 将字符串数组写入 java 中的文本文件?

java - 使用java程序从Web服务器日志中识别 session

java - 如何打印没有转义符和引号的嵌套 json 对象

ios - URLSession 从 HTTP GET 请求返回空数组

javascript - 如何分别存储对象数组中的重复值

plsql - 寻找重复的源代码

Java:产生更大的随机数

javascript - 使用 ng-repeat 读取 JSON AngularJs 中的嵌套数组