【发布时间】:2014-02-28 15:35:01
【问题描述】:
我正在使用 Gson 解析简单的 JSON 对象。我希望它在键名重复时抛出一些错误。例如
{
a: 2,
a: 3
}
在我的例子中,Gson 解析这样的 JSON 并将 a 设置为 3。我希望它抛出一些异常。
我知道我可以将 JSON 解析为映射,然后 Gson 在这种情况下抛出异常,但前提是重复的键没有嵌套在映射中。如果我有例如像这样的 JSON:
{
a: 2,
b: {
dup: 1,
dup: 2
}
}
尽管如此,它还是毫无例外地被解析,我只有一个值为 2 的“dup”。
我可以以某种方式设置 Gson 在这种情况下抛出错误吗?或者在JsonObject 实例中有重复的条目,以便我自己检测到它(但我怀疑这一点,因为它是无效的JsonObject)
可重现的例子
String json = "{\"a\":2, \"a\":3}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
System.out.println(jsonObject);
打印出来
{"a":3}
【问题讨论】:
-
您可以添加SSCCE 以便我们复制您所描述的内容吗?
-
@dimo414 根据我的理解,我已经为他们做到了。
-
在我看来你应该让另一端发送有效的 JSON。
-
当然,这样的 JSON 是无效的。问题是我们将配置保留在其中 - 人类编写它。这很重要,所以我需要这个错误检测。 JSON 似乎真的很适合它,因为我们需要键值、对象数组等。我也在考虑 YAML,但它似乎有同样的问题,我在 instantyaml.appspot.com 上进行测试
-
@SotiriosDelimanolis - 好吧,至少还有十几个要去。