我尝试解码JSON文件,因此将其转换为本机结构类型。显然它不起作用,我也不知道为什么。我将所有JSON对象复制到结构中,以便可解码协议可以完成其工作。
可以在以下位置找到JSON文件:https://pastebin.com/hZxmDMue
这些是反映JSON文件中完全相同的对象的模型。
struct Appstructure: Decodable {
var data: [Subdata]
}
struct Subdata: Decodable {
var favourites: Items
var cart: Items
}
struct Items: Decodable {
var items: [Item]
}
struct Item: Decodable {
var type: String
var content: Content
}
struct Content: Decodable {
var productLines: [String]
var productImage: String
}
我正在使用苹果提供的JSONDecoder,就像这样:
func fetchAppStructure() -> Appstructure? {
guard let path = Bundle.main.path(forResource: "iMessage-test-version-3", ofType: "json") else { return nil }
guard let data = try? Data(contentsOf: URL(fileURLWithPath: path), options: []) else { return nil }
do {
try JSONDecoder().decode(Appstructure.self, from: data)
} catch {
print(error.localizedDescription)
}
return nil
}
但是我收到以下解码错误。
DecodingError
▿ keyNotFound : 2 elements
- .0 : CodingKeys(stringValue: "cart", intValue: nil)
▿ .1 : Context
▿ codingPath : 2 elements
- 0 : CodingKeys(stringValue: "data", intValue: nil)
▿ 1 : _JSONKey(stringValue: "Index 0", intValue: 0)
- stringValue : "Index 0"
▿ intValue : Optional<Int>
- some : 0
- debugDescription : "No value associated with key CodingKeys(stringValue: \"cart\", intValue: nil) (\"cart\")."
- underlyingError : nil
如果需要其他任何方法来重现此错误,请询问。这在逻辑思维上可能很小。希望有人看到这个问题!提前致谢。