【问题标题】:Issue parsing JSON with Swift使用 Swift 解析 JSON 的问题
【发布时间】:2016-06-28 12:04:12
【问题描述】:

我有一个包含此人对象的 JSON 文件。每个人都有不同的信息。这是 JSON 文件的结构。

[
  {
    "person": {
      "name": "Dani",
      "job": "Artist",
      "country": "FR",
      "sold": "992",
      "email": "Dani",
      "facebook": "Artist",
      "twitter": "Dani",
      "instagram": "Artist",
      "snapchat": "Dani",
      "photo": "Artist"
    }
  },
  {
    "person": {
      "name": "Alex",
      "job": "",
      "country": "TU",
      "sold": "992",
      "email": "Dani",
      "facebook": "Artist",
      "twitter": "Dani",
      "instagram": "Artist",
      "snapchat": "Dani",
      "photo": "Artist"
    }
  }
]

我能够打开 json 文件,但无法解析它。这是我的代码

 func lodData()
    {
        let data = NSData(contentsOfURL: url!)



        do {
            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)

            if let person = json["person"] as? [[String: AnyObject]] {
                for p in person {
                    if let name = p["name"] as? String {
                        names.append(name)
                    }
                }
            }
        } catch {
            print("error serializing JSON: \(error)")
        }

        print(names) 

    }

因此,名称数组仍然为空。

【问题讨论】:

  • 你需要研究这个答案:- stackoverflow.com/questions/25621120/…
  • @ei-captain-v2-0 这个问题与 iOS 无关。所有方法均来自 Foundation。
  • 结构的顶层是一个数组。并且人物字典也被一个不必要的字典包裹着。

标签: json swift


【解决方案1】:

person is [String: String] 表示字典不是数组......你可以这样做

 if let data = json as? [[String: AnyObject]] {
      for p in data {
          if let person = p["person"] as? [String: String]{
              names.append(person["name"])
          }
       }
  }

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多