当你尝试使用 JSONDecoder
从 rawg.io
检索接口结果时遇到问题,可能是由于以下几个原因:
rawg.io
。rawg.io
返回的响应可能不是有效的 JSON 格式。rawg.io
的接口。确保你的网络连接正常,并且能够访问 rawg.io
。你可以使用浏览器或其他工具(如 curl
)手动访问接口,确认是否能够成功获取数据。
curl -I https://api.rawg.io/api/games
确保 rawg.io
返回的响应是有效的 JSON 格式。你可以使用在线 JSON 验证工具(如 JSONLint)来验证响应内容。
rawg.io
的某些接口可能需要 API 密钥。你可以在 rawg.io
的开发者页面注册并获取 API 密钥,然后在请求中添加密钥。
let urlString = "https://api.rawg.io/api/games?key=YOUR_API_KEY"
if let url = URL(string: urlString) {
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
guard let data = data else {
print("No data received")
return
}
do {
let decoder = JSONDecoder()
let games = try decoder.decode([Game].self, from: data)
print(games)
} catch {
print("JSON decoding error: \(error)")
}
}
task.resume()
}
确保你的数据模型与 rawg.io
返回的数据结构匹配。你可以使用 Codable
协议来简化数据解析过程。
struct Game: Codable {
let id: Int
let name: String
// 添加其他需要的属性
}
do {
let decoder = JSONDecoder()
let games = try decoder.decode([Game].self, from: data)
print(games)
} catch {
print("JSON decoding error: \(error)")
}
以下是一个完整的示例代码,展示了如何使用 URLSession
和 JSONDecoder
从 rawg.io
获取游戏数据:
import Foundation
struct Game: Codable {
let id: Int
let name: String
// 添加其他需要的属性
}
let urlString = "https://api.rawg.io/api/games?key=YOUR_API_KEY"
if let url = URL(string: urlString) {
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
guard let data = data else {
print("No data received")
return
}
do {
let decoder = JSONDecoder()
let games = try decoder.decode([Game].self, from: data)
print(games)
} catch {
print("JSON decoding error: \(error)")
}
}
task.resume()
}
通过以上步骤,你应该能够解决无法使用 JSONDecoder
从 rawg.io
检索接口结果的问题。
领取专属 10元无门槛券
手把手带您无忧上云