0

在将映射序列化为 JSON 时,Saxon 似乎不维护键的插入顺序。虽然我知道 JSON 不需要这样做,但它有助于诊断和减少最终用户的困惑。

有什么方法可以实现这一点,也许是通过实现自定义序列化程序?还是订单在流程的早期丢失?

4

1 回答 1

0

Saxon(Java/.NET 版本)有两个 XDM 映射实现,HashTrieMap 和 DictionaryMap,它们都没有维护顺序。两者都使用随机插入位置的哈希结构,因此无法恢复它。同样,Saxon-JS 使用不保留顺序的 HashTrie 结构。

我们自己为 Saxon-JS 生成 SEF 文件时遇到了这个问题。这是一种基于 JSON 的格式,如果属性是随机顺序的,则很难阅读。所以我们实现了序列化选项saxon:property-order,它允许您在输出中定义属性的排序。它不能让您保持原始输入顺序,但它确实使您能够以对人类读者有意义的方式对输出进行排序。

与 W3C 规范的所有 Saxon 扩展一样,这需要 Saxon-PE 或更高版本。

于 2020-09-17T15:14:38.230 回答