我目前正在学习如何在Swift 2.0中获取和解析JSON文件。
- 这是我朋友提供的示例JSON文件**
{
"name": "Busitevent",
"count": 398,
"frequency": "Every 30 mins",
"version": 93,
"newdata": true,
"lastrunstatus": "success",
"thisversionstatus": "success",
"nextrun": "Wed Feb 10 2016 02:43:20 GMT+0000 (UTC)",
"thisversionrun": "Wed Feb 10 2016 02:13:19 GMT+0000 (UTC)",
"results": {
"collection1": [
{
"eventTitles": {
"href": "https://events.ucsc.edu/event/3338",
"text": "32nd Annual Martin Luther King Jr. Convocation featuring Alicia Garza"
},
"eventDates": "",
"eventDescription": "",
"index": 1,
"url": "https://events.ucsc.edu/"
}
}
我正在尝试模式匹配“collection1”,以便将其转换为对象
- 这是我到目前为止得到的(用假的URL替换)**
let url = NSURL(string: "www.jsonsourcefile.com")
let request = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
//print(NSString(data: data!, encoding: NSUTF8StringEncoding))
var names = [String]()
do {
let json : NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! NSDictionary
if let collection1 : NSArray = json["collection1"] as? NSArray{
print("you got it")
//names.append(collection1)
}
} catch {
print("error serializing JSON: \(error)")
}
print(names) // ["Bloxus test", "Manila Test"]
}
所以我面临的主要问题是collection1没有被我的if语句匹配,我不知道为什么。
1条答案
按热度按时间n3h0vuf21#
在尝试检索
collections1
数组之前,必须首先获取results
字典。下面提供的代码将给予您很好地理解如何在没有任何第三方解析器的情况下解析JSON。JSON示例:(因为问题没有有效的JSON)
在上面的JSON中,您必须注意以下内容:
employees
对象是字典数组要获取
firstName
的值,必须执行嵌套的if let
块来获取数据。**注意:**如果需要解析更大的JSON,嵌套的
if let
s的复杂度会更高。有第三方Swift JSON解析器(如SwiftyJSON)可以简化您访问对象的方式。SwiftyJSON使用与@kye提到的语法类似的语法。