Gra*_*Lea 13 java json jvm jackson json5
我们希望在 JVM 中解析JSON5文档,但GitHub 上提供的 JSON5 特定库的支持似乎都非常低。由于解析器通常会吸引安全漏洞,因此我们不希望使用尚未被社区广泛使用和审查的解析器。
这让我们想知道: Jackson JSON 解析器的可选功能可以用来解析 JSON5 吗?
Gra*_*Lea 28
通过启用以下可选的 Jackson 解析器功能:
\nALLOW_UNQUOTED_FIELD_NAMESALLOW_TRAILING_COMMAALLOW_SINGLE_QUOTESALLOW_BACKSLASH_ESCAPING_ANY_CHARACTERALLOW_NON_NUMERIC_NUMBERSALLOW_JAVA_COMMENTSALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS似乎可以支持 JSON5 的所有标题功能,除了:
\nJackson 有许多可选功能,可以在解析器上启用这些功能,以使其解析方式更加宽松。
\n将这些解析器选项与 JSON5 的主要功能进行比较,我们发现支持以下内容:
\n\n\n对象键可以是 ECMAScript 5.1 IdentifierName。
\n
\xe2\x9c\x85 支持该ALLOW_UNQUOTED_FIELD_NAMES功能
\n\n对象可能有一个尾随逗号。
\n
\n\n数组可以有一个尾随逗号。
\n
\xe2\x9c\x85 均支持该ALLOW_TRAILING_COMMA功能
\n\n字符串可以用单引号引起来。
\n
\xe2\x9c\x85 支持该ALLOW_SINGLE_QUOTES功能
\n\n字符串可以通过转义换行符来跨越多行。
\n字符串可能包含字符转义。
\n
\xe2\x9c\x85 这两个似乎都受到JacksonALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER功能的支持,尽管此处转义的含义或目的可能略有不同。迪尔。
\n\n数字可以是 IEEE 754 正无穷大、负无穷大和 NaN。
\n
\xe2\x9c\x85 支持该ALLOW_NON_NUMERIC_NUMBERS功能
\n\n允许单行和多行注释。
\n
\xe2\x9c\x85 支持该ALLOW_JAVA_COMMENTS功能。
Jackson部分支持以下 JSON5 功能:
\n\n\n数字可能有前导或尾随小数点。
\n
\xe2\x9c\x85 该功能支持前导小数点ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS。
\xe2\x9b\x94\xef\xb8\x8f Jackson 似乎不支持尾随小数点。
\n目前(2021 年中)似乎没有任何方法可以配置 Jackson 以允许以下 JSON5 功能:
\n\n\n数字可以是十六进制。
\n数字可能有尾随小数点。
\n数字可以以明确的加号开头。
\n
\n\n允许附加空白字符。
\n