首页 > 解决方案 > Swift Parse JSON 错误:没有与键 CodingKeys 关联的值(stringValue: \"_source\

问题描述

我正在尝试解析以下 json 数据:

在此处输入图像描述

下面是我的结构:

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: "No value associated with key CodingKeys(stringValue: \"_source\", intValue: nil) (\ "_source\").",基础错误:nil))

这是因为 json 信息是一个数组吗?我怎样才能解析这些信息?

标签: jsonswiftalamofirejsonparser

解决方案


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)
   }

推荐阅读