【发布时间】:2014-08-16 12:08:24
【问题描述】:
我有一个从包含重复键的数据库中获取的 JSON 字符串。我想通过将它们的值组合到一个数组中来删除重复的键。
例如
输入
{
"a":"b",
"c":"d",
"c":"e",
"f":"g"
}
输出
{
"a":"b",
"c":["d","e"],
"f":"g"
}
实际数据是一个可能嵌套的大文件。我不会提前知道有什么或有多少对。
我需要为此使用 Java。 org.json 由于重复键引发异常,gson 可以解析字符串但每个重复的键都会覆盖最后一个。我需要保留所有数据。
如果可能,我想在不编辑任何库代码的情况下这样做
【问题讨论】:
-
JSON 对象不能包含具有相同键的 2 个项目。在您的示例 json 中,c 的第一次出现将被覆盖。您可以通过在 jsonlint.com 验证您的 json 来查看这一点
-
从技术上讲,您从数据库中获取的内容不是“JSON”。您需要重新评估数据是如何写入的,或者更有可能自己为您的数据编写某种解析器。我想不出一个库会期望以这种方式转换数据。
-
根据这个问题,它是有效的,尽管解析器出于明显的原因不允许这样做。我真的不在乎它是否不是有效的 JSON,只要我可以将具有重复值的字符串格式转换为没有重复值的字符串格式stackoverflow.com/questions/21832701/…
标签: java json duplicates gson arrays