解码来自“aqicn.org”的 JSON 数据时出错

问题描述 投票:0回答:1

我是快速编程的新手,我陷入了这个问题,解析我从“https://aqicn.org/api/”获得的 JSON 数据。

因为我想要的数据只是一个'aqi',所以我在下面做了一个超级简单的模型来解析JSON数据。 (也请参考下面附上的截图)

struct Dust: Codable {
    let data: DataClass
}

struct DataClass: Codable {
    let aqi: Int
}

此外,这是我收到的错误消息。

keyNotFound(CodingKeys(stringValue: "aqi", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"aqi\", intValue: nil) (\"aqi\").", underlyingError: nil))

好像我做的模型是错误的,但我不确定是什么问题。 我确实把 aqi 改成 String 再试了,还是报错。

这里有解码函数以防万一...

func parseDustJSON(_ dustData: Data) -> Int? {
        print(#function)
        do {
            let decodedDustData = try JSONDecoder().decode(DataClass.self, from: dustData)
            let dustData = decodedDustData
            return dustData.aqi
        } catch {
            print(error)
            return nil
        }
    }
}

如果有人能帮助我,我将不胜感激。

screenshot of the JSON data I want to get

ios json swift parsing
1个回答
0
投票

你需要通过

Dust.self
,而不是
DataClass.self

let decodedDustData = try JSONDecoder().decode(Dust.self, from: dustData)
return decodedDustData.data.aqi
© www.soinside.com 2019 - 2024. All rights reserved.