我们想解析 JSON5 JVM 中的文档,但 the JSON5-specific libraries available on GitHub似乎所有支持都非常低。由于解析器通常是安全漏洞的磁铁,我们不希望使用尚未被社区广泛使用和审查的解析器。
这让我们想知道:Jackson JSON parser 的可选功能可以吗?用于解析JSON5?
最佳答案
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 有 a number of optional features可以在解析器上启用它以使其解析方式更加宽松。
支持的功能
将这些解析器选项与 JSON5 的标题功能进行比较,我们发现支持以下内容:
Object keys may be an ECMAScript 5.1 IdentifierName.
✅ 支持
ALLOW_UNQUOTED_FIELD_NAMES
特征Objects may have a single trailing comma.
Arrays may have a single trailing comma.
✅ 两者都支持
ALLOW_TRAILING_COMMA
特征Strings may be single quoted.
✅ 支持
ALLOW_SINGLE_QUOTES
特征Strings may span multiple lines by escaping new line characters.
Strings may include character escapes.
✅ 这两个 appear to be supported通过 jackson 的
ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER
特征,尽管此处逃逸的含义或目的可能略有不同。迪奥。Numbers may be IEEE 754 positive infinity, negative infinity, and NaN.
✅ 支持
ALLOW_NON_NUMERIC_NUMBERS
特征Single and multi-line comments are allowed.
✅ 支持
ALLOW_JAVA_COMMENTS
特征。部分支持的功能
Jackson 部分支持以下 JSON5 功能:
Numbers may have a leading or trailing decimal point.
✅
ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS
支持前导小数点特征。⛔️ Jackson 似乎不支持尾随小数点。
不支持的功能
目前(2021 年年中)似乎没有任何方法可以配置 Jackson 以允许以下 JSON5 功能:
Numbers may be hexadecimal.
Numbers may have a trailing decimal point.
Numbers may begin with an explicit plus sign.
Additional white space characters are allowed.
关于java - Jackson解析器可以用来解析JSON5吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68312227/