gpt4 book ai didi

json - 无法解析 JSON 文件

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

这是我第一次使用 JSON。我有一个 JSON 文件将城市和国家与时区关联起来。这是内容示例。

 [
{
"name": "Abidjan",
"country": "Ivory Coast",
"timeZoneName": "Africa/Bamako"
},
{
"name": "Abu Dhabi",
"country": "U.A.E.",
"timeZoneName": "Asia/Dubai"
}
]

我正在尝试使用 codable 来解析文件,但是我用来解析文件的函数不起作用。我为文件中的每个实例都有一个结构。

struct LoadedTimeZone: Codable {
var name: String
var country: String
var timeZoneName: String
}

我有一个用于将解码内容直接加载到的结构

struct LoadedTimeZones: Codable {
var results: [LoadedTimeZone]
}

在 UITableViewController 的 viewDidLoad 中,我添加了以下代码:

if let url = Bundle.main.url(forResource: "CitiesAndTimeZones", withExtension: "json") {
if let data = try? Data(contentsOf: url) {
parse(json: data)
}
}

这是 parse(json: Data) 的函数

 func parse(json: Data) {
let decoder = JSONDecoder()

if let jsonTimeZones = try? decoder.decode(LoadedTimeZones.self, from: json) {
timeZones = jsonTimeZones.results
tableView.reloadData()
}
}

timeZones 被声明为 viewDidLoad 上方的 var timeZones = [LoadedTimeZone]()

从我所做的一些调试来看,jsonTimeZones 似乎返回 nil。我在 stackoverflow 和互联网上查看了多个案例,我所做的似乎并没有太大不同。

我真的很感激任何帮助。

最佳答案

替换

if let jsonTimeZones = try? decoder.decode(LoadedTimeZones.self, from: json) {

if let jsonTimeZones = try? decoder.decode([LoadedTimeZone].self, from: json) {

您的根是一个数组,并且 json 中没有名为 results 的键

struct LoadedTimeZone: Codable {
let name,country,timeZoneName: String
}

关于json - 无法解析 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757870/

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