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