将 NSData 转换为 JSON 对象数组
Posted
技术标签:
【中文标题】将 NSData 转换为 JSON 对象数组【英文标题】:Convert NSData to an Array of JSON objects 【发布时间】:2017-10-12 06:10:57 【问题描述】:我正在我的 swift 代码中访问 HTTP GET 方法。此方法返回一个 NSData 变量。该数据本质上只是一个 json 对象数组,如下所示:
["author": "meowmeow", "platform": "Google", "author": "adasd", "platform": "Dropbox"
并存储在可变数据中。
我想将这个 NSData 变量转换成一个 json 对象数组,我可以轻松访问,但不知道如何使用 swifty json 执行此操作。
我尝试了以下方法:
let jsonString = NSString(data: data! as! Data, encoding: String.Encoding.utf8.rawValue)
但是当我这样做之后:
var jj = JSON.init(parseJson: jsonString!)
for j in jj
print(j)
print("------")
什么都没有打印出来,这意味着 JSON.init 方法没有成功解析字符串并返回一个可以循环的数组。如何将 NSData 转换为我可以访问的 JSON 对象数组:
print(jj[0]["author"])
【问题讨论】:
你使用的是 Swift 还是 Objective-C? Swift 中的 NSURLSession API 返回数据而不是 NSData 在描述中发布您的网络请求代码 为什么在 Swift 中使用NSString
和 NSData
?不要那样做。原生 Swift 中的相同代码显着缩短(并且更高效):let jsonString = String(data: data!, encoding: .utf8)
【参考方案1】:
来自 SwiftyJSON GitHub 页面
let json = JSON(data: data) //use this method
for dict in json
//do the stuff
【讨论】:
以上是关于将 NSData 转换为 JSON 对象数组的主要内容,如果未能解决你的问题,请参考以下文章
将 NSDictionary 对象转换为 NSData 对象,反之亦然