采用以下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中解码嵌套数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)