Swift | Parse nested JSON Data


#1

Добрый вечер, всем. Пытаюсь разобраться, как распарсить вложенный JSON. Всё время получаю либо nil, либо какую-то другую ошибку.

Использую Alamofire. Приходит вот такой JSON с вложенными данными:

{
    "success": true,
    "result": {
        "previous": [
            {
                "id": 607,
                "doctor_id": 37,
                "filial_id": 10,
                "user_id": 36,
                "date": "2020-08-31",
                "time_start": "09:00",
                "time_end": "21:00",
                "datetime_ts_start": "1598508000",
                "datetime_ts_end": "1598551200",
                "free": 0,
                "created_at": "2020-02-13 16:41:17",
                "updated_at": "2020-09-01 12:46:58",
                "comment": null,
                "feedback": false,
                "filial": {
                    "id": 10,
                    "ones_id": "bab31a28-2375-11e4-bd23-00224d9f6e55",
                    "name": "Преображенская",
                    "address": "asfcsafsdfgsdfgsdfgdsfdsdfsdfssddgh",
                    "type": "asfcsafsdfgsdfgsdfgdsfdsdfsdfssddgh",
                    "metro": "asfcsafsdfgsdfgsdfgdsfdsdfsdfssddgh",
                    "created_at": "2020-02-13 16:41:15",
                    "updated_at": "2020-09-07 18:37:32",
                    "image": "1599493052.jpeg"
                },
                "doctor": {
                    "id": 37,
                    "ones_id": "4a1db7a5-0b8d-4fcd-86d8-dd98a6e1475b",
                    "name": "Иван Иванов Иванович",
                    "specialty": "врач-терапевт",
                    "cost": null,
                    "photo": "1596539470.jpeg",
                    "created_at": "2020-02-13 16:41:17",
                    "updated_at": "2020-02-13 16:41:17"
                }
            }
    "error": null
}

Из всего этого ответа на экран мне нужно присвоить разным лейблам следующие поля: result - previous - date result - previous - time_start result - previous - filial - address result - previous - filial - name result - previous - filial - image result - previous - doctor - name result - previous - doctor - specialty result - previous - doctor - photo

Каждая сущность (appointmetns + filial + doctor) должна располагаться в своей ячейке на tableview.

Подскажите, пожалуйста:

  1. Как правильно декодировать весь JSON и поместить его в массив? Или возможно в разные массивы: appointmetns, doctors, filials. Я планировал этот массив/ массивы передать через completion из сетевого запроса во view controller, чтобы разместить инфу в labels.
  2. Как работать с картинкой в данном случае?
  3. Ещё, когда добавляю “enum CodingKey: String, CodingKey” появляется следующая ошибка: Type ‘Appointment’ does not conform to protocol ‘Decodable’. Как можно решить эту проблему?

#2

Используйте ObjectMapper и генерацию моделей https://app.quicktype.io/