gpt4 book ai didi

arrays - 我将如何分离 JSON 字典值并将它们放入 Swift 数组中?

转载 作者:行者123 更新时间:2023-11-28 07:28:02 25 4
gpt4 key购买 nike

我正在尝试返回字典字符串值。它返回为:

categories: [yelp1.Zom2(categories: yelp1.Zom3(name: "Delivery")), yelp1.Zom2(categories: yelp1.Zom3(name: "Dine-out"))....]

我如何只返回名称值,例如“Delivery”和“Dine-Out”?//yelp1 只是文件名

示例 JSON 数据

{
"categories": [
{
"categories": {
"id": 1,
"name": "Delivery"
}
},
{
"categories": {
"id": 2,
"name": "Dine-out"
}
},

这些是我的结构

struct Zom3:Codable{
let name:String
}
struct Zom2:Codable{

//let category_id:Int?
let categories: Zom3

}
struct Zom:Codable{

//let category_id:Int?
let categories: [Zom2]

}

我试图解码 Zom3,因为那是名称值所在的位置,但它指出找不到 key 。它不允许我使用 for 循环遍历以至少单独获取字典的每个元素。

override func viewDidLoad() {
super.viewDidLoad()

let urlName = "https://developers.zomato.com/api/v2.1/categories"
let url = URL(string: urlName)
var urlReq = URLRequest(url: url!)
urlReq.httpMethod = "GET"
urlReq.addValue("application/json", forHTTPHeaderField: "Accept")
urlReq.addValue(zomatoKey, forHTTPHeaderField: "user_key")

let task = URLSession.shared.dataTask(with: urlReq) { (data, response, error) in
guard let data = data else {return}

do {
let items = try JSONDecoder().decode( Zom.self, from: data)
print(items)
}
catch {
print(error)
}
}
task.resume()
}

最佳答案

从您所写的内容来看,您的输出似乎来自“print(items)”行。如果这是真的,那么你称为“items”的对象就是顶级结构“Zom”。要获得底层“名称”,我认为您确实需要在“let items = try ...”下使用 for 循环; (而不是“打印(项目)”)

var arrayOfNames: [String] = []
let zoms = item.categories
for item in zoms {
let possibleName = item.categories?.name
if let name = possibleName {
arrayOfNames.append(name)
}
}
print(arrayOfNames)

如果我没有犯任何错误,这应该创建一个名称数组并打印出“Delivery, Dine-Out”

关于arrays - 我将如何分离 JSON 字典值并将它们放入 Swift 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55859744/

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