问题描述
如果这不是 Swift 问题,请原谅我,但目前我不知道。
我返回的 JSON 如下所示:
Setoptions[$FrontEndSession,CodeAssistOptions -> {"FloatingElementEnable" -> False}]
但我的 Codable Struct 看起来像
[
{
"name" : _,"age" : _,"jobs" : [],"gender" : _
}
]
是随机的还是我没有设置参数还是什么?
解决方法
JSON 的字典是无序的,如 JSON 规范所定义。即使您生成的 JSON 具有以特定方式排序的对象字段,也没有符合 JSON 规范的消费者有义务遵守您的排序。
Swift 的 Dictioanry
也同样是无序的,并且在每次应用启动时播种不同,以抵御基于哈希冲突的 DOS 攻击。
话虽如此,有时尝试以对顺序敏感的方式操作 JSON 是有益的,即使规范没有要求。考虑一个工具示例,该工具用于操作在 git 中受版本控制的 JSON 文件。
大多数工具的工作方式是读取文件的内容,将其解析为数据结构,操作数据结构,然后将其重新保存到文件中。这样的过程会导致一个小的变化(比如添加/删除单个键),从而导致条目的完全重新排列、对不相关空白的更改等,所有这些都会使差异大增。
在这种情况下,使用顺序敏感的解析器和集合会很有用,它们会保留有关原始文本的足够信息,以便您以最少的方式对其进行操作。
当然,使用这些文件的系统会忽略顺序,这是典型的。