Swift中如何访问JSON内键为"0"的price与productname字段
如何从嵌套JSON结构中访问指定字段?
嘿,我来帮你搞定这个问题!你已经通过URLSession拿到了JSON数据,现在要从键为"0"的嵌套字典里取出price和productname字段对吧?其实只需要在现有代码基础上多做一层字典解析,而且为了避免崩溃,建议用安全的可选绑定代替强制转型。
这里是修改后的完整代码:
URLSession.shared.dataTask(with: url!) { (data, response, err) in guard let data = data else { return } do { // 解析顶层JSON为[String: Any]类型的字典 let json = try JSONSerialization.jsonObject(with: data) as! [String: Any] // 取出键为"0"的子字典,用可选绑定做安全转型 if let productInfo = json["0"] as? [String: Any] { // 提取price字段,同样用可选绑定确保类型匹配 if let price = productInfo["price"] as? String { print("产品价格:\(price)") } // 提取productname字段 if let productName = productInfo["productname"] as? String { print("产品名称:\(productName)") } } } catch let jsonErr { // 捕获并打印解析错误 print("JSON解析失败:\(jsonErr.localizedDescription)") } }.resume()
关键步骤说明:
- 首先解析得到顶层的
json字典后,通过json["0"]获取到嵌套的产品信息字典,这里用as? [String: Any]做安全转型,防止如果JSON结构变化(比如键"0"不存在或者对应值不是字典)导致的崩溃。 - 拿到子字典
productInfo后,就可以像访问普通字典一样,通过键名price和productname取出对应的值,同样用可选绑定确保类型是String(因为你的JSON里这两个字段都是字符串类型)。
另外提醒一下:尽量避免使用as!这种强制转型,一旦JSON结构和预期不符,你的APP就会崩溃。用as?配合可选绑定是更稳妥的做法哦。
内容的提问来源于stack exchange,提问作者Cristian
相关产品推荐
相关产品推荐

