Mea*_*her 9 swift alamofire swifty-json
我使用Alamofire和SwiftyJSOn来解析JSON输出.它工作得很好,但有些网站给json提供了转义输出.我在下面使用Alamofire
Alamofire.request(.POST, url, parameters: param, encoding: .JSON)
.responseJSON { (req, res, json, error) in
var json = JSON(json!)
Run Code Online (Sandbox Code Playgroud)
Site为我提供了带有转义字符串的JSON结果,因此SwiftyJSON无法对其进行解码.我怎样才能在下面转换
{
"d": "{\"UniqeView\":{\"ArrivalDate\":null,\"ArrivalUnitId\":null,\"DeliveryCityName\":null,\"DeliveryTownName\":null},\"ErrorMessage\":null,\"Message\":null,\"IsFound\":false,\"IsSuccess\":true}"
}
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
{
"d": {
"UniqeView": {
"ArrivalDate": null,
"ArrivalUnitId": null,
"DeliveryCityName": null,
"DeliveryTownName": null
},
"ErrorMessage": null,
"Message": null,
"IsFound": false,
"IsSuccess": true
}
}
Run Code Online (Sandbox Code Playgroud)
// This Dropbox url is a link to your JSON
// I'm using NSData because testing in Playground
if let data = NSData(contentsOfURL: NSURL(string: "https://www.dropbox.com/s/9ycsy0pq2iwgy0e/test.json?dl=1")!) {
var error: NSError?
var response: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: &error)
if let dict = response as? NSDictionary {
if let key = dict["d"] as? String {
let strData = key.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
var error: NSError?
var response: AnyObject? = NSJSONSerialization.JSONObjectWithData(strData!, options: NSJSONReadingOptions.allZeros, error: &error)
if let decoded = response as? NSDictionary {
println(decoded["IsSuccess"]!) // => 1
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想你必须解码两次:包装对象及其内容.
@ericd评论帮我解决了这个问题.我接受了他对这个问题的回答.由于我使用Alamofire进行异步操作,而SwiftyJSON,我无法使用他的代码.这是Alamofire和SwiftyJSON的代码.
Alamofire.request(.POST, url, parameters: param, encoding: .JSON)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("Error: \(error)")
failure(res, json, error)
}
else {
var jsond = JSON(json!)
var data = jsond["d"].stringValue.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
jsond = JSON(data: data!)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12499 次 |
| 最近记录: |