【问题标题】:Parsing array of json object in ios swift 3.0 [duplicate]在ios swift 3.0中解析json对象数组[重复]
【发布时间】:2017-06-09 03:46:21
【问题描述】:

尝试在 iOS swift 3.0 中解析 JSON 数组。但是在 XCode 中我总是会看到这个错误:

类型“NSFastEnumerationIterator.Element”(又名“Any”)没有下标成员

我试图解析的数组看起来像这样:

[{"area_code":1,"area_name":"value"},{"area_code":2,"area_name":"value"},{"area_code":3,"area_name":"value"},{"area_code":4,"area_name":"value"}]

iOS 的代码 sn-p 看起来是这样的。

let json = try!JSONSerialization.jsonObject(with: data!, options: .mutableLeaves) as? NSArray

            // The JSONObjectWithData constructor didn't return an error. But, we should still
            // check and make sure that json has a value using optional binding.
            if let parseJSON = json {
                for dayData in parseJSON{

                    let areaObj = AreaCode()

                    if let areaCode = dayData["area_code"] as? Int{
                        areaObj.areaCode = areaCode
                    }
                    if let areaName = dayData["area_name"] as? String{
                        areaObj.areaName = areaName
                    }
                    areaCodeArray.append(areaObj)
                }
                DispatchQueue.main.async(execute: {
                    // perform on main
                    self.onGetAreaList("Success");
                });
            }

【问题讨论】:

  • @EICaptainv2.0 你拯救了我的一天。谢谢。

标签: ios json swift3


【解决方案1】:

[[String:Any]]代替NSArray试试这种方式

let json = try! JSONSerialization.jsonObject(with: data!, options: []) as? [[String:Any]]

     for dayData in json{
          let areaObj = AreaCode()

          if let areaCode = dayData["area_code"] as? Int{
              areaObj.areaCode = areaCode
          }

          if let areaName = dayData["area_name"] as? String{
               areaObj.areaName = areaName
          }

          areaCodeArray.append(areaObj)

【讨论】:

  • 你为什么将选项传递为 [] ?
  • 如果你不想使用任何选项,只需使用空数组@Zain,因为选项需要一个数组类型来传递
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多