我有 func Json 解码,我如何现代化我的函数并添加参数数组类型我的“模型”数据?
我需要在另一个全局数组中添加所有解码数据“let model”。 示例:
let myArray = [Any]()
在我认为添加的函数中
myArray.append(model.Welcome)
我的 JSON 解码代码:
struct Welcome: Codable {
let id: Int
let name, username, email: String
let address: Address
let phone, website: String
let company: Company
}
struct Address: Codable {
let street, suite, city, zipcode: String
let geo: Geo
}
struct Geo: Codable {
let lat, lng: String
}
struct Company: Codable {
let name, catchPhrase, bs: String
}
func userApiJsonCodableClass () {
guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else {return}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let dataResponse = data,
error == nil else {
print(error?.localizedDescription ?? "Response Error")
return }
do {
//here dataResponse received from a network request
let decoder = JSONDecoder()
let model = try decoder.decode([Welcome].self, from:
dataResponse) //Decode JSON Response Data
print("---------CodableClass---------")
print(model[0].website) //Output - 1221
} catch let parsingError {
print("Error", parsingError)
}
}
task.resume()
}
最佳答案
首先在此处进行更改:var myArray = [Welcome]()
。其次,将您的项目直接收集到数组中: myArray = try detector.decode([Welcome].self, from: dataResponse)//Decode JSON Response Data
.
不要忘记在解析错误时清除数组。
var myArray = [Welcome]()
struct Welcome: Codable {
let id: Int
let name, username, email: String
let address: Address
let phone, website: String
let company: Company
}
struct Address: Codable {
let street, suite, city, zipcode: String
let geo: Geo
}
struct Geo: Codable {
let lat, lng: String
}
struct Company: Codable {
let name, catchPhrase, bs: String
}
func userApiJsonCodableClass () {
guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else {return}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let dataResponse = data,
error == nil else {
print(error?.localizedDescription ?? "Response Error")
return }
do {
//here dataResponse received from a network request
let decoder = JSONDecoder()
myArray = try decoder.decode([Welcome].self, from:
dataResponse) //Decode JSON Response Data
print("---------CodableClass---------")
print(myArray.first?.website) //Output - 1221
} catch let parsingError {
print("Error", parsingError)
myArray = []
}
}
task.resume()
}
关于arrays - 如何编辑我的函数并添加参数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55703940/