以下是一个使用JSONDecoder解码API响应的示例代码:
struct ContentView: View {
@State private var items = [Item]()
let url = URL(string: "https://api.example.com/items")!
var body: some View {
List(items) { item in
Text(item.name)
}
.onAppear {
URLSession.shared.dataTask(with: self.url) { data, response, error in
do {
if let data = data {
let decoder = JSONDecoder()
let items = try decoder.decode([Item].self, from: data)
self.items = items
} else {
print("No data was returned from the API.")
}
} catch let error {
print("Error decoding JSON: \(error.localizedDescription)")
}
}.resume()
}
}
}
struct Item: Codable {
let id: Int
let name: String
}
在此示例中,ContentView使用URL加载了一个API,并使用JSONDecoder将响应数据解码为Item结构的数组。如果解码失败,控制台将输出有用的错误消息。请注意,此代码还使用了Swift 4的Codable协议来简化模型解码过程。