【发布时间】:2021-07-19 03:17:18
【问题描述】:
如果这不是 Swift 问题,请原谅我,但目前我不知道。
我返回的 JSON 如下所示:
[
{
"name" : _,
"age" : _,
"jobs" : [],
"gender" : _
}
]
但我的 Codable Struct 看起来像
struct Person: Codable {
let name: String
let age: Int
let gender: String
let jobs: [Job]
}
是随机的还是我没有设置参数还是什么?
【问题讨论】:
-
JSON 字典本质上是无序的。如果您想了解为什么会这样,请检查您必须研究hash table 数据结构的工作原理。这就是 Swift 的
Dictionary和 JSON 的对象背后的支持数据结构。 -
@SergioBost 答案是当你解码时,你会按名称而不是位置来匹配对象
-
不,答案是字典没有任何顺序。对象可能每次都以相同的顺序到达,也可能不会。 JSON 和 Swift 都说字典是无序的。
-
@SergioBost,JSON 中的“所有不是字典的东西”都是一个数组和一个值。数组是有序的,值是单数的
-
视情况而定。一些框架允许您使用注释设置字段顺序。例如,在 Java Jackson 中,注释 @JsonPropertyOrder 可用于对 json 中的字段进行排序。但这只是提高人类可读性的装饰物(例如先拥有更重要的领域)。从程序化的角度来看,这没什么区别。