在Swift 4中无法使用JSONDecoder解析JSON数组

伊吉色林

我有一个需要解析的JSON数组,我选择使用JSONDecoder进行解析。

JSON数组如下所示:

[{"Id":0,"Key":"key0","Name":"name0","Title":"title0"},{"Id":1,"Key":"key1","Name":"name1","Title":"title1"},{"Id":2,"Key":"key2","Name":"name2","Title":"title2"}]

问题是,JSONDecoder创建了数组,但是对象中的所有字段均为空。这里有什么问题?

这是我的游乐场文件。解析后,您可以看到所有字段均为空:

//: Playground - noun: a place where people can play

import UIKit
import Foundation

class Result: Codable{
    let title: String = ""
    let id: Int = 0
    let key: String = ""
    let name: String = ""

    enum CodingKeys: String, CodingKey{
        case title = "Title"
        case id = "Id"
        case key = "Key"
        case name = "Name"
    }
}

let data = "[{\"Id\":0,\"Key\":\"key0\",\"Name\":\"name0\",\"Title\":\"title0\"},{\"Id\":1,\"Key\":\"key1\",\"Name\":\"name1\",\"Title\":\"title1\"},{\"Id\":2,\"Key\":\"key2\",\"Name\":\"name2\",\"Title\":\"title2\"}]".data(using: .utf8)!


let decoder = JSONDecoder()
do{
    let results = try decoder.decode([Result].self, from: data)
    print("Result count: \(results.count)")
    for result in results{
        print("Name: \(result.name)")
    }
}catch let exception{
    print(exception.localizedDescription)
}
马丁·R

删除常量属性的初始值

class Result: Codable{
    let title: String
    let id: Int
    let key: String
    let name: String

    // ...
}

(或将属性设为)。JSON解码器无法设置初始化的常量属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章