Swift Parse JSON 错误:没有与键 CodingKeys 关联的值(stringValue: \"_source\

Posted

技术标签:

【中文标题】Swift Parse JSON 错误:没有与键 CodingKeys 关联的值(stringValue: \\"_source\\【英文标题】:Swift Parse JSON Error : No value associated with key CodingKeys(stringValue: \"_source\Swift Parse JSON 错误:没有与键 CodingKeys 关联的值(stringValue: \"_source\ 【发布时间】:2019-03-07 02:39:47 【问题描述】:

我正在尝试解析以下 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: "否 与键 CodingKeys 关联的值(stringValue: \"_source\", intValue: nil) (\"_source\").", 底层错误: nil))

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

【问题讨论】:

Swift : The data couldn’t be read because it isn’t in the correct format的可能重复 【参考方案1】:

您的 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)
   

【讨论】:

你能写出完整的代码来调用上面的json吗?它是带有 Post 方法的 REST Api 将 json 添加为文本而不是图像 drive.google.com/file/d/1V25FAlCQRYNKVAp695SFOzQlLFO8AsIA/… 我用你的数据检查了这段代码,它工作正常。检查您收到的数据。添加错误日志和 api 响应以获得更多帮助 哦,感谢您的努力。 Error dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Unable to convert data to string around character 2272." UserInfo=NSDebugDescription=Unable to convert data to string around character 2272.)))这是错误

以上是关于Swift Parse JSON 错误:没有与键 CodingKeys 关联的值(stringValue: \"_source\的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:将数组保存到 UserDefaults 错误 - 对象数与键数不同

编辑核心数据会产生错误,此类与键的键值编码不兼容

没有与键解析 json 关联的值

我如何排除JSON.parse没有对象的错误? [重复]

JSON.parse 没有预期的行为

将 JSON 数据从 Parse Cloud Code 返回到 Swift 中的可解码结构