Можете ли вы помочь мне с Codable ошибкой в ​​ответе Alamofire? - PullRequest
0 голосов
/ 27 декабря 2018

У меня недавно возникла проблема с анализом ответа с помощью Codable.Я переписываю старое приложение на Swift.

Я обнаружил проблему.У меня есть такой ответ, например, на сервере:

{ "object": { "key1": "key" "key2": "key" "key3": "key" } }

Я вызываю запрос Alamofire для получения ответа.

Ответ от него Я декодирую в JSON с $ 0.responseJSON.Когда я его печатаю, у меня в консоли появляется следующее:

{ object: { key1: "key" "key2": "key" key3: "key" } }

Когда я пытаюсь использовать Codable в этом ответе.Сбой, он не может найти требуемое значение.По сути, он может декодировать ключ "key2".Я думаю, что это связано с квотами, потому что я тестирую разные ключи в JSON.

Можете ли вы дать мне подсказку, что изменить на стороне приложения?

Извините за этот простой обзор.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете создать две структуры Codable или класс Codable на нем.Один для корневого объекта и второй для вашего объекта.

Как показано ниже, мои классы для вашего ответа.

Корневой класс:

class RootClass: Codable {
    var object: Object?
}

Класс объекта:

class Object: Codable {
    var key1 : String?
    var key2 : String?
    var key3 : String?
}

Итак, теперь в своем ответе на данные вы можете делать так:

do {
    // Here data is the data you get from response.
    let root = try JSONDecoder().decode(RootClass.self, from: data)
} catch {
    print(error)
}

И я предлагаю вам проверить свой JSON, он должен выглядеть так:это:

{
    "object": {
        "key1": "key",
        "key2": "key",
        "key3": "key"
    }
}

Надеюсь, это сработает для вас.

...