You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:27:29