Ios 发生JSON解析错误,详细信息如下:
代码 输出 发生JSON解析错误,详细信息如下: 错误域=NSCOCAERRORDOMAIN Code=3840字符0周围的无效值。UserInfo={NSDebugDescription=字符0周围的值无效。} 完成了Ios 发生JSON解析错误,详细信息如下:,ios,objective-c,swift,Ios,Objective C,Swift,代码 输出 发生JSON解析错误,详细信息如下: 错误域=NSCOCAERRORDOMAIN Code=3840字符0周围的无效值。UserInfo={NSDebugDescription=字符0周围的值无效。} 完成了 我得到错误-字符0周围的值无效。我希望获得具有所需键和值的正确格式的数据,请任何人帮助我解决此问题。您的JSON响应已损坏。用于验证它 把它从 {\"result\":[{\"stateId\":3871,\"stateName\":\"Aberdeenshire\"} 到
我得到错误-字符0周围的值无效。我希望获得具有所需键和值的正确格式的数据,请任何人帮助我解决此问题。您的JSON响应已损坏。用于验证它 把它从
{\"result\":[{\"stateId\":3871,\"stateName\":\"Aberdeenshire\"}
到
请注意删除了反斜杠。看起来您的响应中包含字符串,请尝试类似的操作
do {
let parsed = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject]
let responseStr = parsed["d"] as! String
let correctData = responseStr.dataUsingEncoding(NSUTF8StringEncoding)
let responseDic = try NSJSONSerialization.JSONObjectWithData(correctData, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject]
print(responseDic)
}
catch let error as NSError {
print("A JSON parsing error occurred, here are the details:\n \(error)")
}
试试这个
if let result:String = parsed["d"]! {
let result = convertStringToDictionary(text: result)
print("Converted result = \(result)")
}
//SWIFT 3
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.data(using: String.Encoding.utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}
//SWIFT 2
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}
您可以粘贴restclient响应吗?您可以检查json数据是否有效..在其自身初始值内使用的变量->对于变量“correctData”,行上的连续语句必须用“:”分隔,对于行->捕获let错误为NSError{抱歉,添加了错误{括号之后,请删除它,检查我编辑的答案。获取错误->在第行使用未解析标识符“NSUTF8StringEncoding”->让correctData=responseStr.dataUsingEncodingNSUTF8StringEncodi是的,我甚至遇到了错误,所以我通过不同的代码改变了逻辑。并且解决了你所说的错误,现在代码没有问题了。
{
"result": {
"stateId": 3871,
"stateName": "Aberdeenshire"
}
}
do {
let parsed = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject]
let responseStr = parsed["d"] as! String
let correctData = responseStr.dataUsingEncoding(NSUTF8StringEncoding)
let responseDic = try NSJSONSerialization.JSONObjectWithData(correctData, options: NSJSONReadingOptions.AllowFragments) as! [String: AnyObject]
print(responseDic)
}
catch let error as NSError {
print("A JSON parsing error occurred, here are the details:\n \(error)")
}
if let result:String = parsed["d"]! {
let result = convertStringToDictionary(text: result)
print("Converted result = \(result)")
}
//SWIFT 3
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.data(using: String.Encoding.utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}
//SWIFT 2
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}