Swift 4 - Доступ к универсальному объекту Json для Codable Struct - PullRequest
0 голосов
/ 25 июня 2018

Мои API всегда возвращают Json со следующей структурой:

{
    "data": Object
}

Где «Объект» может быть примитивными данными (например, String), другим объектом Json или массивом Json.

{
    "data": "string"
}

{
    "data": {
       "id_user": 1
       "name": "name"
    }
}

{
    "data": [{
       "id_user": 1
       "name": "name"
    },
    {
       "id_user": 2
       "name": "name"
    }]
}

Как я могу получить доступ к "Объекту", чтобы я мог разобрать его с помощью Codable структур?

1 Ответ

0 голосов
/ 27 июня 2018

Хорошо, я нашел решение, используя словарь. Таким образом, я могу получить доступ к содержимому «данные», привести его к данным, а затем проанализировать его с помощью Codable. Вот код:

let json = try JSONSerialization.jsonObject(with: response.data!, options: []) as! [String: Any]
guard let dataKey = json["data"] else {
    throw CustomError.dataNotFound
}
let jsonData = try JSONSerialization.data(withJSONObject: dataKey, options: [])
let result = try JSONDecoder().decode(CodableStruct.self, from: jsonData)

Надеюсь, это поможет.

...