gpt4 book ai didi

json - 在 Swift/Xcode 中将 JSON 文件转换为数组

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

我整个星期都在挣扎。我是编程新手。我无法在 Xcode 中将简单的 JSON 文件转换为字典。使用 Codable 的新方法的在线文档很少。所以我正在使用一个演练,其中包含以下代码。

导入 UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

guard let path = Bundle.main.path(forResource: "menu", ofType: "json") else { return }
let url = URL(fileURLWithPath: path)

do {

let data = try Data(contentsOf: url)
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
//print(json)

guard let array = json as? [Any] else { return }
for user in array {
guard let userDict = user as? [String: Any] else { return }
guard let drinks = userDict["drinks"] as? String else { print("not a String"); return }
guard let junkFood = userDict["junk-food"] as? String else { return }

print(drinks)
print(junkFood)
print(" ")
}
}
catch {
print(error)
}

}

}

The below code is what my JSON looks like.

{"menu": {
"drinks": [
{"coke": "20"},
{"pepsi": "20"},
{"water": "20"}
],
"junk-food": [
{"hamburger": "40"},
{"fries": "20"},
{"pizza": "20"}
]
}}

任何人都可以引导我完成整个过程,或者向我展示一些有关如何将 JSON 转换为以后可以从中映射数据的字典的简化文档吗?我正在使用 Xcode 并尝试开发 Swift 4。

预先感谢您的耐心等待。

最佳答案

我猜你的 json 实际上是一个字典而不是一个数组。所以 guard let array = json as? [Any] else { return } 失败,因为 json 是 [String: Any]。您可以使用 "menu" 键访问数组。

这是您的代码的更新版本:

 do {
let data = try Data(contentsOf: url)
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
//print(json)

guard let menuDict = json as? [String: Any] else { return }

guard let drinks = menuDict["drinks"] as? [[String: Any]] else {
print("not an array of dictionaries")
return
}

guard let junkFood = menuDict["junk-food"] as? [[String: Any]] else {
print("not an array of dictionaries")
return
}
print(drinks)
print(junkFood)
print(" ")
}

尝试一下,如果有效请告诉我。顺便说一句,这只是 do block 。

关于json - 在 Swift/Xcode 中将 JSON 文件转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45723653/

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