繁体   English   中英

如何修复此 Swift“解码找不到密钥 CodingKeys”错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM