![](/img/trans.png)
[英]How to fix no value associated with key CodingKeys error when parsing JSON in swift
[英]How do I fix this Swift "decoding could not find key CodingKeys" error?
**我有这个 JSON:**
{
"results": [
{
"dimensions": [],
"metrics": [
385,
54,
18263,
120
]
}
],
"previous": null,
"next": "https://app.tester.com/api/v1/projects/dev-js/tester/query?page=2",
"page": 1,
"size": 500,
}
**我需要解码。 目前我的 STRUT 看起来像这样:**
struct APIRootEA: Codable {
let results: String?
let dimensions: String?
let metrics: String?
let EAResults: [ResultsEA]
}
struct ResultsEA: Codable {
let eaRevenue: Int
let eaTransactions: Int
let eaVisits: Int
let eaActiveUrls: Int
let previous: String?
let next: String?
let page, size: Int
enum CodingKeys: String, CodingKey {
case eaRevenue
case eaTransactions
case eaVisits
case eaActiveUrls
case previous
case next
case page
case size
}
}
但我收到错误:
在 JSON 中找不到键 CodingKeys(stringValue:“eaRevenue”,intValue:nil):没有与键 CodingKeys(stringValue:“eaRevenue”,intValue:nil)(“eaRevenue”)关联的值。
从 URLRequest 返回的原始数据是:
可选(“{“结果”:[{“维度”:[],“指标”:[82,289198.5079709999,64782,5218]}],“上一个”:null,“下一个”:“https://api。 tester.com/v1/projects/tester-solutions/tester-project/query?page=2","page":1,"size":500}")
我不明白为什么。 这里通常附带条件,我非常喜欢 Swift,这是我的第一次尝试,所以我正在寻求帮助。
我将不胜感激任何建议。
我试过操纵 STRUT 但没有成功。
当创建一个从 JSON 解码的结构时,你应该至少从看起来像它被解码的 JSON 的东西开始。
例如,在您的 JSON 中,您有...
"metrics": [12, 45, 643, 58],
即有一个关键metrics
,它指向一个整数数组。
所以,要“免费”解码这个(即不编写自定义解码器)你应该有一个像......
struct MyStruct: Decodable {
let metrics: [Int]
}
如果您将metrics
设置为其他任何东西,它就不会起作用。 (没有自定义解码器)
此外,您的编码键是一种告诉 Swift JSON 中的键是什么的方法。您的编码键包含一个键eaRevenue
,但 JSON 中没有这样的键。这就是您收到错误消息的原因。
看起来您正在对 map 从 JSON 到结构执行一些非常复杂的逻辑。 可能值得从更直接的东西开始,然后慢慢构建一个针对此行为的自定义解码器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.