gpt4 book ai didi

json - 不使用 for 语句解析 JSON 数组

转载 作者:行者123 更新时间:2023-11-30 11:59:06 24 4
gpt4 key购买 nike

我想找到解析 JSON 数组的解决方案。我有用于解析 JSON 的代码,但我想要一个没有 for 语句的解决方案,我可以解析数组。

解析代码:

func parsigJsonData(resultArray:any?){

if let resultArray = resultDic["trucks"] as? BaseModelData {
print(resultArray)
}
}


class BaseModel {
public typealias BaseModelData = (id:String?,title:String?,select:Bool)

var id : String?
var title : String?
var select : Bool = false

init(json: [String:Any]) {
self.id = json["id"] as? String
self.title = json["title"] as? String
self.select = false
}
}
extension BaseModel {

var tableRepresentation: [BaseModelData] {
return [(id:id,title:title,select:select)]
}
}

结果数组包含基本模型对象的列表。我尝试使用此代码进行解析,但这不起作用并且转换为 BaseModelData 失败。是否有一种无需 for 语句即可解析 JSON 数组的解决方案?感谢您提供的解决方案。

这是我的 json 响应示例:

{"卡车":[{"id":"1","标题":"\u062e\u0627\u0648\u0631\u062a\u0627 5\u062a\u0646\u0627\u062a\u0627\u0642\u0686\u0648\u0628\u06cc"},{"id":"2","title":"\u062e\u0627\u0648\u0631\u062a\u0627 5\u062a\u0646\u06a9\u0645\u067e\u0631\u0633\u06cc"},{"id":"3","标题":"\u062e\u0627\u0648\u0631\u062a\u0627 8\u062a\u0646\u0627\u062a\u0627\u0642\u0686\u0648\u0628\u06cc"},{"id":"4","标题":"\u062e\u0627\u0648\u0631\u062a\u0627 8\u062a\u0646\u06a9\u0645\u067e\u0631\u0633\u06cc"} ,{"id":"5","title":"\u062e\u0627\u0648\u0631\u06cc\u062e\u0686\u0627\u0644\u062f\u0627\u0631"}]

最佳答案

Swift 4 可以让你变得非常简单。只需添加 Decodable 协议(protocol)即可,

struct BaseModel: Codable {
var id : String?
var title : String?
var select : Bool = false
}

并用它来检索数据:

func makeRequest(completionHandler: @escaping ([BaseModel]?, Error?) -> Void) {

var urlRequest = URLRequest(url: url)
request.httpMethod = "GET"

let task = URLSession.shared.dataTask(with: request as URLRequest){
(data, response, error) in
guard let responseData = data else {
print("Error: did not receive data")
completionHandler(nil, error)
return
}
guard error == nil else {
completionHandler(nil, error)
return
}

let decoder = JSONDecoder()
do {
let dataObject = try decoder.decode([BaseModel].self, from: responseData)
completionHandler(dataObject, nil)
} catch {
print("error trying to convert data to JSON")
print(error)
completionHandler(nil, error)
}
}

task.resume()
}

关于json - 不使用 for 语句解析 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com