Swift中如何从[String:Array]数组及指定JSON结构获取值
问题2:从location数组中提取name字段
从你打印的结果[[id:1,name:sam]]能看出来,location是一个元素为字典的数组([[String: Any]]类型)。要拿到name的值,只需要先取出数组里的第一个字典元素,再通过"name"键取值就行,用可选链可以简化代码:
// 基于你已有的代码扩展 if let location = data["location"] as? [[String: Any]], // 取出数组第一个元素,再提取name并转成String类型 let name = location.first?["name"] as? String { print(name) // 输出 "sam" }
解释下这段代码:
location.first?:因为数组可能为空,用可选链避免崩溃,如果数组有元素就取第一个,否则返回nil["name"] as? String:把字典里的name值转成String类型,确保类型安全
如果数组里可能有多个location元素,你可以遍历数组拿到所有的name:
if let locationArray = data["location"] as? [[String: Any]] { let names = locationArray.compactMap { $0["name"] as? String } print(names) // 输出 ["sam"],如果有多个元素会返回所有name的数组 }
内容的提问来源于stack exchange,提问作者nahlaabdulnawal
相关产品推荐
相关产品推荐

