首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杰克逊解析器可以用来解析JSON5吗?

杰克逊解析器可以用来解析JSON5吗?
EN

Stack Overflow用户
提问于 2021-07-09 06:32:00
回答 1查看 1.6K关注 0票数 11

我们希望在JVM中解析JSON5文档,但GitHub上可用的JSON5 5专用库似乎都支持得很低。由于解析器通常是安全漏洞的磁铁,我们倾向于不使用尚未被社区广泛使用和检查的解析器。

这让我们想知道:Jackson JSON解析器的可选特性可以用来解析JSON5吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 06:32:00

tl;dr

通过启用以下可选的Jackson解析器特性:

  • ALLOW_UNQUOTED_FIELD_NAMES
  • ALLOW_TRAILING_COMMA
  • ALLOW_SINGLE_QUOTES
  • ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER
  • ALLOW_NON_NUMERIC_NUMBERS
  • ALLOW_JAVA_COMMENTS
  • ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS

似乎可以支持JSON5 5的所有标题功能,除了:

  • 十六进制数
  • 数字尾随小数点
  • 加上数字前的符号
  • 额外空格字符

详细信息

Jackson有一些可选特性,它可以在解析器上启用,使解析器在解析方式上更加宽松。

支撑特征

将这些解析器选项与JSON5的标题特性进行比较,我们发现支持以下内容:

对象键可能是ECMAScript 5.1 IdentifierName。

ALLOW_UNQUOTED_FIELD_NAMES特性支持的✅

对象可能有一个尾随逗号。数组可能有一个尾随逗号。

ALLOW_TRAILING_COMMA特性支持的✅

字符串可以是单引号。

ALLOW_SINGLE_QUOTES特性支持的✅

字符串可以通过转义新行字符来跨越多行。 字符串可以包括转义字符。

这两个似乎是支持的都是杰克逊的ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER特性,尽管在这里转义的意义或目的可能会微妙地不同。都是。

数字可以是IEEE754正无穷大、负无穷大和NaN。

ALLOW_NON_NUMERIC_NUMBERS特性支持的✅

允许单行和多行注释。

ALLOW_JAVA_COMMENTS特性支持的✅。

部分支撑特征

杰克逊部分支持以下JSON5特性:

数字可能有前导小数点或尾随小数点。

ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS特性支持✅前导小数点。

⛔️杰克逊似乎不支持尾随小数点。

不支持特征

目前(2021年年中)似乎没有任何方法来配置Jackson以允许以下JSON5特性:

数字可能是十六进制的。 数字可能有一个尾随小数点。 数字可以以显式加号开头。允许使用其他空白字符。

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

https://stackoverflow.com/questions/68312227

复制
相关文章

相似问题

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