Swift:解析 JSON 文件
Posted
技术标签:
【中文标题】Swift:解析 JSON 文件【英文标题】:Swift: Parsing JSON file 【发布时间】:2015-03-10 23:30:43 【问题描述】:我有以下 JSON 文件:
"_id" : "$oid" : "54feffe1412807551c90eaa2" , "loc" : [ 35.09 , 12.01],
"_id" : "$oid" : "54ff0b62412807551c90eaa4" , "loc" : [ 43.98 , 12.34]
如何在 Swift 中解析这个 JSON 文件?我需要 loc 中的值。
【问题讨论】:
你可以很容易地通过谷歌搜索“xcode json to nsdictionary”找到这个 Xcode Parse Json的可能重复 【参考方案1】:我遇到了一个问题,我遇到了一个致命错误:在展开 Optional 值时意外发现 nil。
我向我的服务器发送一个 http 请求。像这样
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) (response, data, error) in
if error == nil
var datastring:String = NSString(data:data, encoding:NSUTF8StringEncoding)!
// println(datastring)
if (data != nil)
var json=NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: &self.err) as NSDictionary
println(json)
if (error != nil)
println(self.err?.localizedDescription)
else
//do something here with json
else
println(error.localizedDescription)
并得到这个 json 文件:
"_id" : "$oid" : "54feffe1412807551c90eaa2" , "loc" : [ 35.09 , 12.01],
"_id" : "$oid" : "54ff0b62412807551c90eaa4" , "loc" : [ 43.98 , 12.34]
如果我只有一个文件,它可以工作。但是有两个文件我得到了致命错误。
【讨论】:
我的json文件好像不是有效的json。 是的,格式错误。请检查在线验证器工具。而对于您粘贴的 JSON,只需在开始和结束处放置方括号。【参考方案2】:使用NSJSONSerialization
:
func ParseJSONData(data: NSData) -> NSDictionary?
if let dict = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as? NSDictionary return dict
println("Failed to parse")
return nil
// *********************
if let info = ParseJSONData(jsonstring.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false))
【讨论】:
是jsonstring NSData吗? 我不知道你会用什么,但对于这个例子,jsonstring当然是一个字符串。 请给我一个投反对票的目的,这显然是 OP 要求的...... 我没说是你。以上是关于Swift:解析 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章
JSON文件下载后在Swift 3中解析JSON,NSCocoaErrorDomain Code=3840