是一种方法来配置杰克逊ObjectMapper允许真/假而不是真/假?



我有一个畸形的JSON与"key":True而不是"key":true

所以我得到以下错误:

"com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'True': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')"

在解析JSON字符串之前,我可以用replace("True", "true")解决我的问题。

但是我想通过处理错误或类似的东西来自动完成这个。使用Jackson配置。这可能吗?

private static final ObjectMapper jsonMapper;
JsonFactory f = JsonFactory.builder()
.enable(JsonReadFeature.ALLOW_LEADING_ZEROS_FOR_NUMBERS)
.enable(JsonReadFeature.ALLOW_SINGLE_QUOTES)
.build();
jsonMapper = JsonMapper.builder(f).build();
JsonNode res = jsonMapper.readTree(content)

JSON-sample:

{
...,
"key" : True,
...
}

你想要的本来就是不可能的。

解析器需要能够区分标记,以便知道如何处理JSON的下一部分,因为不同的JSON元素应该以不同的方式处理。

只有两个有效的非字符串(没有括在引号中)boolean值:truefalse(null也将成功解析为false)。解析算法依赖于它们,因为它需要能够识别令牌。

boolean值表示为String,即括在引号中,自动以不区分大小写的方式进行解析,无需任何自定义。对于非字符串booleanno存在允许调整解析器行为的格式化功能。

恐怕除了对JSON进行预处理调整boolean值之外,没有其他办法可以解决这个问题。

看来你已经知道答案了。

你有错误的JSON,而错误的JSONIS NOTJSON .

JacksonObjectMapper是一个JSON处理器。

如果您想了解更详细的规范和实现,请参考下面的链接:

  • https://www.json.org/json-en.html
  • https://github.com/FasterXML/jackson-core/blob/jackson-core-2.14.1/src/main/java/com/fasterxml/jackson/core/json/UTF8StreamJsonParser.java L741

最新更新