我有一个简单的JSON对象:
{
"values": {
"a":"",
"b":"",
"c":"",
"d":"",
"e":""
}
}
我希望以这种方式将它解码为Swift结构,以后我可以按照与收到JSON对象完全相同的顺序迭代values
中的键。 /强>
这可以在Swift中使用吗?
我的尝试如下:
let json = "{ \"values\": { \"a\":\"\", \"b\":\"\", \"c\":\"\", \"d\":\"\", \"e\":\"\" } }"
struct JSS: Codable {
var values: [String: String?]?
}
let data = json.data(using: .utf8)
do {
let decoder = JSONDecoder()
let jss = try decoder.decode(JSS.self, from: data!)
jss.values?.map { print("\($0.key)") }
}
catch {
}
将打印:
b
e
a
d
c
答案 0 :(得分:0)
回到旧的方式,使用JSONSerialization.jsonObject(with: Data, options: JSONSerialization.ReadingOptions) -> Any
。
它确实保持顺序.... 直到您将json?["values"]
投射到[String: Any]
中。此时,Cezar在上面answer中所说的进入了场景:字典是无序的。
以下屏幕截图显示,直到json?["values"]
为Any
为止,顺序一直保存在字符串描述中。