Десериализовать двойной массив - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь десериализовать некоторые JSON на Swift 4.2 с Codable Protocol. Мой Джсон

{  
   "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]]

но безуспешно. Спасибо заранее

1 Ответ

0 голосов
/ 15 мая 2019

data ключ является вложенным массивом и нет ключа elements

 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)
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...