我正在使用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
}
我想从“位置”中获取每个“经”和“长”,将它们配对并显示在表格单元格中。
我在网络服务中的代码如下
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”。任何帮助将不胜感激
答案 0 :(得分:3)
您需要使用array
创建Dictionary
个位置(即flatMap
)。然后,将值访问为
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生成模型和解析代码。