可以使用jackson解析器解析json5吗?

bq3bfh9z  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(700)

我们希望在jvm中解析json5文档,但是github上提供的json5特定库的支持似乎都非常低。由于解析器通常是安全漏洞的磁石,我们不希望使用尚未被社区广泛使用和审查的解析器。
这让我们想知道:jacksonjson解析器的可选特性可以用来解析json5吗?

apeeds0o

apeeds0o1#

tl;博士

通过启用以下可选的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的所有标题功能,除了:
十六进制
数字的尾随小数点
数字前的加号
额外空白字符

细部

jackson有许多可选特性,可以在解析器上启用这些特性,以使其在解析方式上更加宽松。

支持的功能

将这些解析器选项与json5的标题特性进行比较,我们发现支持以下内容:
对象键可以是ecmascript 5.1 identifiername。
✅ 支持 ALLOW_UNQUOTED_FIELD_NAMES 特征
对象可以有一个尾随逗号。
数组可以有一个尾随逗号。
✅ 双方都支持 ALLOW_TRAILING_COMMA 特征
字符串可以是单引号。
✅ 支持 ALLOW_SINGLE_QUOTES 特征
字符串可以通过转义新行字符跨越多行。
字符串可能包含字符转义。
✅ 这两种观点似乎都得到了Jackson的支持 ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER 特征,尽管此处转义的含义或目的可能略有不同。迪奥。
数字可以是ieee 754正无穷大、负无穷大和nan。
✅ 支持 ALLOW_NON_NUMERIC_NUMBERS 特征
允许使用单行和多行注解。
✅ 支持 ALLOW_JAVA_COMMENTS 特色。

部分支持的功能

jackson部分支持以下json5功能:
数字可以有前导或尾随小数点。
✅ 支持前导小数点 ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS 特色。
⛔️ jackson似乎不支持尾随小数点。

不支持的功能

目前(2021年年中)似乎没有任何方法可以配置jackson以允许以下json5功能:
数字可以是十六进制。
数字后面可能有一个小数点。
数字可以以明确的加号开头。
允许使用其他空白字符。

相关问题