【问题标题】:Is it a way to configure Jackson ObjectMapper to allow True/False instead true/false?这是一种配置 Jackson ObjectMapper 以允许 True/False 而不是 true/false 的方法吗?
【发布时间】:2022-11-26 01:54:59
【问题描述】:

我有一个格式错误的 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") 解决我的问题。

但我想通过处理错误或类似的东西自动执行此操作。使用杰克逊配置。可能吗?

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,
  ...
}

【问题讨论】:

    标签: java json jackson objectmapper jsonparser


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多