在将映射序列化为JSON时,Saxon似乎不会保持键的插入顺序。虽然我知道JSON不需要这样做,但它将有助于诊断和减少最终用户的困惑。
有没有什么方法可以做到这一点,也许是通过实现一个定制的序列化程序?或者订单会在流程的早期丢失吗?
发布于 2020-09-17 23:14:38
Saxon ( Java/.NET版本)有两个XDM实现,HashTrieMap和DictionaryMap,两者都不维持顺序。两者都使用在插入时随机化位置的散列结构,因此无法恢复位置。同样,Saxon-JS使用不保留顺序的HashTrie结构。
我们自己解决了这个问题,为Saxon-JS生成了SEF文件。这是一种基于JSON的格式,如果属性是随机顺序的,则很难读取。因此,我们实现了序列化选项saxon:property-order,它允许您为输出中的属性定义排序。它不能让您保持原始的输入顺序,但可以让您以一种对读者有意义的方式对输出进行排序。
与W3C规范的所有Saxon扩展一样,这需要Saxon-PE或更高版本。
https://stackoverflow.com/questions/63937755
复制相似问题