Alamofire 响应在 JSON 内容之前包含文本 将其与 SwiftyJSON 一起使用
Alamofire response contain text before JSON content use it with SwiftyJSON
我正在使用 Alamofire 请求 JSON 对象并使用 SwiftyJSON 访问它。
我的请求的响应是这样的:
// JSON webservice ...
[
{
"message":"Please connect"
}
]
如您所见,我需要删除字符串“// JSON webservice ...”,因为它实际上不是有效的 JSON 对象。
请注意,我正在使用 .responseString 否则我无法删除字符串部分。
所以为了删除我正在做的字符串:
let jsonString = data?.stringByReplacingOccurrencesOfString("// JSON webservice ...", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
现在我可以使用我的 String 了:
var json = SwiftyJSON.JSON(jsonString!)
我可以打印 json :
println(json)
但是无论我打印什么值
println(json[0]["message"].string)
为零。
我终于找到了解决方案:
- 我们从 .responseString 方法中获取我们的字符串(数据)
- 我们去掉导致JSON对象序列化失败的部分
我们将字符串转换为 NSData 并尝试序列化我们的 JSON 对象:
let data = jsonString?.dataUsingEncoding(NSUTF8StringEncoding)
let jsonData = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSArray?
现在应该没问题了,尝试打印 JSON 对象的值时一切正常
var json = SwiftyJSON.JSON(jsonData!)
println(json[0]["message"])
它打印出正确的值。
我正在使用 Alamofire 请求 JSON 对象并使用 SwiftyJSON 访问它。
我的请求的响应是这样的:
// JSON webservice ...
[
{
"message":"Please connect"
}
]
如您所见,我需要删除字符串“// JSON webservice ...”,因为它实际上不是有效的 JSON 对象。 请注意,我正在使用 .responseString 否则我无法删除字符串部分。
所以为了删除我正在做的字符串:
let jsonString = data?.stringByReplacingOccurrencesOfString("// JSON webservice ...", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
现在我可以使用我的 String 了:
var json = SwiftyJSON.JSON(jsonString!)
我可以打印 json :
println(json)
但是无论我打印什么值
println(json[0]["message"].string)
为零。
我终于找到了解决方案:
- 我们从 .responseString 方法中获取我们的字符串(数据)
- 我们去掉导致JSON对象序列化失败的部分
我们将字符串转换为 NSData 并尝试序列化我们的 JSON 对象:
let data = jsonString?.dataUsingEncoding(NSUTF8StringEncoding) let jsonData = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSArray?
现在应该没问题了,尝试打印 JSON 对象的值时一切正常
var json = SwiftyJSON.JSON(jsonData!) println(json[0]["message"])
它打印出正确的值。