什么决定了返回 JSON 的顺序?

问题描述

如果这不是 Swift 问题,请原谅我,但目前我不知道。

我返回的 JSON 如下所示:

Setoptions[$FrontEndSession,CodeAssistOptions -> {"FloatingElementEnable" -> False}]

但我的 Codable Struct 看起来像

[
   {
      "name" : _,"age" : _,"jobs" : [],"gender" : _
   }
]

随机的还是我没有设置参数还是什么?

解决方法

JSON 的字典是无序的,如 JSON 规范所定义。即使您生成的 JSON 具有以特定方式排序的对象字段,也没有符合 JSON 规范的消费者有义务遵守您的排序。

Swift 的 Dictioanry 也同样是无序的,并且在每次应用启动时播种不同,以抵御基于哈希冲突的 DOS 攻击。

话虽如此,有时尝试以对顺序敏感的方式操作 JSON 是有益的,即使规范没有要求。考虑一个工具示例,该工具用于操作在 git 中受版本控制的 JSON 文件。

大多数工具的工作方式是读取文件的内容,将其解析为数据结构,操作数据结构,然后将其重新保存到文件中。这样的过程会导致一个小的变化(比如添加/删除单个键),从而导致条目的完全重新排列、对不相关空白的更改等,所有这些都会使差异大增。

在这种情况下,使用顺序敏感的解析器和集合会很有用,它们会保留有关原始文本的足够信息,以便您以最少的方式对其进行操作。

当然,使用这些文件的系统会忽略顺序,这是典型的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...