使用 Swift 解析 JSON 的问题
Posted
技术标签:
【中文标题】使用 Swift 解析 JSON 的问题【英文标题】:Issue parsing JSON with Swift 【发布时间】: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)
因此,名称数组仍然为空。
【问题讨论】:
你需要研究这个答案:- ***.com/questions/25621120/… @ei-captain-v2-0 这个问题与 ios 无关。所有方法均来自 Foundation。 结构的顶层是一个数组。并且人物字典也被一个不必要的字典包裹着。 【参考方案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"])
【讨论】:
以上是关于使用 Swift 解析 JSON 的问题的主要内容,如果未能解决你的问题,请参考以下文章
IOS/Swift/JSON:使用 swiftyJSON 解析嵌套的 JSON
使用未解析的标识符 'json' (Swift 3) (Alamofire)