我的"key":True
而不是"key":true
有一个格式错误的JSON
因此,我得到了以下错误:
"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-样本:
{
...,
"key" : True,
...
}
发布于 2022-11-25 09:27:36
你想要的本质上是不可能的。
解析器需要能够区分标记,以便知道如何处理JSON的下一部分,因为不同的JSON元素应该以不同的方式处理。
只有两个有效的非字符串(没有用引号括起来) boolean
值:true
和false
( null
也可以成功地解析为false
)。解析算法依赖于它们,因为它需要能够识别令牌。
表示为字符串的boolean
值,即以不区分大小写的方式解析,不需要任何自定义。对于非字符串boolean
值,不存在允许调整解析器行为的格式化功能。
恐怕除了预处理调整boolean
值的JSON之外,没有其他方法可以解决这个问题。
发布于 2022-11-27 14:46:04
看来你已经知道答案了。
您有格式错误的JSON,格式错误的不是 JSON。
Jackson ObjectMapper
是一个JSON处理器。
如果您想知道更详细的规范和实现,请参考下面的链接:
https://stackoverflow.com/questions/74573266
复制相似问题