解析不带引号的json字符串应该在gson中抛出异常

问题描述 投票:0回答:1

我正在尝试解析一个非常简单的 json 片段:

{ key : "value" }

由于 json 需要在字符串两边加上引号,我希望 Gson (2.2.4) 在解析该片段时抛出异常。事实上,情况并非如此,

key
被视为常规字符串。

同样的情况也发生在下面的代码片段中,它看起来显然已经损坏了:

{ key" : "value" }

Gson 使用

key"
作为生成的地图中的键。有没有办法让gson对字符串解析更加严格?

java json gson
1个回答
0
投票

由于遗留原因,Gson 的某些部分默认是宽松的,并且接受根据规范无效的 JSON。最初这并没有得到正确的记录,在某些情况下甚至是错误的。在最近的版本中,文档已得到改进,现在提到默认情况下何时在宽松模式下进行解析。

在版本 2.11.0 中添加了新的

Strictness
API,它允许覆盖此默认的宽松行为,例如使用
GsonBuilder#setStrictness
:

String json = "{ key : \"value\" }";
Gson gson = new GsonBuilder().setStrictness(Strictness.STRICT).create();
// This fails due to JSON syntax errors, as expected
gson.fromJson(json, JsonObject.class);
© www.soinside.com 2019 - 2024. All rights reserved.