簡體   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