【发布时间】:2016-09-18 21:49:44
【问题描述】:
我通过以下代码从在线 API 获得了 NSData:
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("\(error)")
return
}
let res = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("\(res)")
};
task.resume()
数据是这样的(NSString 没问题):
{
"word": "detrimental",
"results": [
{
"definition": "(sometimes followed by `to') causing harm or injury",
"partOfSpeech": "adjective",
"synonyms": [
"damaging",
"prejudicial",
"prejudicious"
],
"similarTo": [
"harmful"
],
"derivation": [
"detriment"
]
}
],
"syllables": {
"count": 4,
"list": [
"det",
"ri",
"men",
"tal"
]
},
"pronunciation": {
"all": ",dɛtrə'mɛntəl"
},
"frequency": 2.77
}
现在,我正在尝试将数据解析为 json。我尝试了一些方法,但都失败了。喜欢这个:
func getJSON(data:NSData) -> [[String:AnyObject]]{
var json = [[String:AnyObject]]()
do {
json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as! [[String:AnyObject]]
} catch {}
return json;
}
这个也失败了:(原因:无法将类型“__NSCFDictionary”(0xd755c0)的值转换为“NSArray”(0xd752f0)。)
func hiJson(data:NSData) -> NSArray {
var json: NSArray!
do {
json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as! NSArray
} catch {
print(error)
}
return json
}
谁能帮忙?
【问题讨论】:
-
你的数据是字典,不是数组。
-
你是对的,谢谢你的帮助。顺便说一句,您知道如何在结果中获取定义键吗?我试过 res["results"]["definition"] 但没用
标签: ios json swift nsdata nsjsonserialization