首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >这是一种配置杰克逊ObjectMapper以允许真/假而不是真/假的方法吗?

这是一种配置杰克逊ObjectMapper以允许真/假而不是真/假的方法吗?
EN

Stack Overflow用户
提问于 2022-11-25 13:05:00
回答 2查看 56关注 0票数 0

我的"key":True而不是"key":true有一个格式错误的JSON

因此,我得到了以下错误:

代码语言:javascript
代码运行次数:0
运行
复制
"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配置。有可能吗?

代码语言:javascript
代码运行次数:0
运行
复制
private static final ObjectMapper jsonMapper;
代码语言:javascript
代码运行次数:0
运行
复制
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-样本:

代码语言:javascript
代码运行次数:0
运行
复制
{
  ...,
  "key" : True,
  ...
}
EN

回答 2

Stack Overflow用户

发布于 2022-11-25 17:27:36

你想要的本质上是不可能的。

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

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2022-11-27 22:46:04

看来你已经知道答案了。

您有格式错误的JSON,格式错误的不是 JSON。

Jackson ObjectMapper是一个JSON处理器。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74573266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档