gpt4 book ai didi

ios - 使用 Swift 4.2 解析嵌套 JSON

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

我正在使用 SwiftlyJSON解析 JSON。我的 JSON 看起来像这样

{
“data”:[{
“id”:123,
“locations”:[{
“lat”:345,
“long”:678
},{
“lat”:345,
“long”:678
}],
”live”:yes
},{
“id”:123,
“locations”:[{
“lat”:999,
“long”:324
},{
“lat”:865,
“long”:765
}],
”live”:no
}],
“success”:true,
“status”: 200
}

我想从“locations”中获取每个“lat”和“long”,将它们配对并显示在表格单元格中。

我在网络服务中的代码如下所示

private func updateSearchResults(_ data: Data) {
do {
let json = try JSON(data: data) //successfully parsed data
let locations = json["data"].arrayValue.map {$0["loactions"].arrayObject}

print(locations) //locations array is printing out correctly
for latlang in locations{
if let lat = latlang["lat"]{
print(lat) //ERROR here
}
}

} catch {
print(error)
}
}

错误描述:无法使用类型为“String”的索引为类型为“[Any]”的值下标

现在,我知道无法通过在索引中提供字符串来访问位置数组的错误,但我不知道如何从 JSON 访问“lat”和“long”。任何帮助将不胜感激

最佳答案

您需要使用 flatMap 创建位置的 array(即 Dictionary)。然后,访问这些值,

if let locations =  json["data"].arrayValue.flatMap { $0["loactions"].arrayObject } as? [[String: Any]] {
for latlang in locations {
print(latlang["lat"])
print(latlang["long"])
}
}

建议:停止使用 SwiftyJSON。使用 Codable 并使用此 app 生成您的模型和解析代码.

关于ios - 使用 Swift 4.2 解析嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847640/

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