Swift Parse JSON Ошибка: нет значения, связанного с ключом CodingKeys (stringValue: \ "_ source \" - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь проанализировать следующие данные json:

enter image description here

Ниже моя структура:

struct Album: Decodable {
    var source: [Sourcet]
    enum CodingKeys: String, CodingKey {
        case source = "_source"
    }
}

struct Sourcet: Decodable {
    var nome, endereco, uf, cidade, bairro: String
}

let response = try JSONDecoder().decode(Album.self, from: data)

Я продолжаю получать сообщение об ошибке:

keyNotFound (CodingKeys (stringValue: "_source", intValue: nil), Swift.DecodingError.Context (codingPath: [], debugDescription: "Нет значение, связанное с ключом CodingKeys (stringValue: \ "_ source \", intValue: nil) (\ "_ source \"). ", underError: nil))

Это из-за того, что информация json является массивом? Как я смогу проанализировать эту информацию?

1 Ответ

1 голос
/ 07 марта 2019

Ваш struct Album неверен, и вы анализируете Album.self отдельный объект вместо массива.

Попробуйте код ниже:

struct Album: Decodable {
    var source: Sourcet // change array to single object
    enum CodingKeys: String, CodingKey {
        case source = "_source"
    }
}

struct Sourcet: Decodable {
    var nome, uf : String
}

Для анализа json в модели:

do {
      let response = try JSONDecoder().decode([Album].self, from: data)
      for item in response {
          print(item.source.nome)
      }
   }catch{
          print("Error: ",error)
   }
...