XPath中fn:parse-json处理NUL字节:是处理器限制还是规范要求?
JSON规范与XPath处理器对NUL字节的处理
首先明确:JSON规范并不允许原始NUL字节(U+0000)直接出现在字符串中,仅允许通过\u0000转义序列表示该字符。
根据JSON官方RFC 8259标准:
字符串值必须是由双引号包裹的Unicode字符序列,其中不能包含未转义的控制字符(U+0000至U+001F),但可以使用转义序列来表示这些字符。
你的XPath处理器的行为是符合规范和通用实践的:
parse-json("\u0000")能正确解析转义序列得到对应的NUL字符,这是符合JSON规范的;- 后续
serialize(map{"method": "json"})输出时将NUL字符转为�(U+FFFD替换字符),这是因为NUL字节在绝大多数文本处理场景中属于不可打印的控制字符,直接输出可能导致下游解析异常、存储问题或显示错乱,所以处理器会做这种安全兼容处理。
简单说:这不是XPath处理器的限制,而是遵循了文本安全处理的通用逻辑,同时完全符合JSON规范的要求。
对比XML:XML的字符集定义直接排除了U+0000,所以从根源上不允许该字符存在;而JSON允许转义表示,但实际输出时会做安全替换,避免潜在问题。
内容的提问来源于stack exchange,提问作者Fravadona
相关产品推荐
相关产品推荐

