首页 > 解决方案 > 反序列化双数组

问题描述

我尝试使用 Codable Protocol 在 Swift 4.2 上反序列化一些 JSON。我的杰森

{  
   "status":1,
   "data":[  
      [  
         {  
            "id":"4klJeiCKTs",
            "body":"first",
            "da":"1442236233",
            "dm":"1442236233"
         },
         {  
            ...
         }
      ]
   ]
}

我的结构和代码:

struct GetEntriesRequest: Decodable{
    var status: Int
    var data: [NestedArrayGetEntries]
}

struct NestedArrayGetEntries: Decodable{
    var elements: [GetEntriesDataFromSession]
}
struct GetEntriesDataFromSession: Decodable{
    var id: String
    var body: String
    var da: String
    var dm: String
}
...
let decoder = JSONDecoder()

            decoder.keyDecodingStrategy = .convertFromSnakeCase
            do {
                let root = try decoder.decode(GetEntriesRequest.self, from: data)
                dataSession = root
            } catch { print(error) }

另外,我尝试了这个结构

var data: [[GetEntriesDataFromSession]]

但没有任何成功。感谢先进

标签: jsonswift

解决方案


datakey 是一个嵌套数组并且没有elementskey

 var data: [NestedArrayGetEntries]

var data: [[NestedArrayGetEntries]]

struct GetEntriesRequest: Codable {
    let status: Int
    let data: [[NestedArrayGetEntries]]
}

struct NestedArrayGetEntries: Codable {
    let id, body, da, dm: String
}

您在这里也不需要蛇盒

  do {
      let root = try JSONDecoder().decode(GetEntriesRequest.self, from: data)
      dataSession = root
   } catch { 
      print(error)
   }

推荐阅读