在swift 4中解码嵌套数组

在swift 4中解码嵌套数组,第1张

概述参见英文答案 > JSON parsing in Swift 4 with complex & nested data                                    2个 采用以下JSON: let rawJson ="""[ { "id": 1, "name":"John Doe" }, { 参见英文答案 > JSON parsing in Swift 4 with complex & nested data2个
采用以下JsON:
let rawJson ="""[      {          "ID": 1,"name":"John Doe"      },{          "ID": 2,"name":"Luke Smith"      },]"""

和用户模型:

struct User: Decodable {    var ID: Int    var name: String}

解码非常简单,如下所示:

let data = rawJson.data(using: .utf8)let decoder = JsONDecoder()let users = try! decoder.decode([User].self,from: data!)

但是如果JsON看起来像这样,顶级是一个字典并需要获取用户数组

let Json ="""{    "users":    [        {          "ID": 1,"name":"John Doe"        },"name":"Luke Smith"        },]}"""

阅读JsON最有效的解决方案是什么?我当然可以创建另一个这样的结构:

struct SomeStruct: Decodable {    var posts: [Post]}

解码如下:

let users = try! decoder.decode(SomeStruct.self,from: data!)

但是这样做感觉不对,只是因为数组嵌套在字典中而创建一个新的模型对象.

如果你想利用JsONDecoder,你必须创建一个嵌套的struct(ure).

我建议为根对象使用名称Root,并将子结构放入Root

struct Root : Decodable {    struct User : Decodable {        let ID: Int        let name: String    }    let users : [User]}let Json = """{    "users": [{"ID": 1,"name":"John Doe"},{"ID": 2,"name":"Luke Smith"}]}"""let data = Data(Json.utf8)do {    let root = try JsONDecoder().decode(Root.self,from: data)    print(root.users)} catch {    print(error)}
总结

以上是内存溢出为你收集整理的在swift 4中解码嵌套数组全部内容,希望文章能够帮你解决在swift 4中解码嵌套数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1089451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存