2016-09-23 39 views
-2

我想从响应中解析JSON。但我得到这个错误
我的代码是。无法将'__NSCFString'(0x104a67320)类型的值转换为'NSDictionary'(0x104a68108)

NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data, response, error) in 

    if error != nil { 
     print("error = \(error)") 
     return 
    } 
    do { 
     let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString)") 

     let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! NSDictionary 

     let str = json["ResultMsg"] as! NSString  
     print ("ResultMsg = " + (str as String)) 

    }catch let error as NSError { 
     print("Error : " + error.localizedDescription) 
    } 
}).resume() 

和控制台日志是:

responseString =可选( “{\” ResuleCode \ “:\” 1 \ “\ ”ResultMsg \“:\ ”SUCCESS \“,\”结果\ “:[{\” UserIdx \ “:\” 4138 \ “\ ”电子邮件\“:\ ”[email protected] \“,\ ”用户名\“:\ ”测试1 \“,\” PWD \ “:\” v + Mb90ZS + Y5Qt9DfuBcJtQ == \ “\ ”电话\“:\ ”\“,\ ”的AppKey \“:\ ”\“,\ ”LoginDt \“:\” 9/23/2016 1:12:18 PM \“,\”LogoutDt \“:\”2016/9/1 10:36:02 \“,\”RegDt \“:\”2016/8/31 9:26: “\”,\“KeywordTime \”:\“60 \”,\“KeywordEnabled \”:\“1 \”,\“FastEnabled \”:\“1 \ ”,\ “KeywordStartTime \”:\ “08:30:00 \”,\ “KeywordEndTime \”:\ “15:30:00 \”,\ “FastStartTime \”:\ “08:00:00 \”, \ “FastEndTime \”:\ “15:30:00 \”,\ “IsFirst \”:\“NOT_FIR ST \”,\ “IsFastNews \”:\ “1 \” \ “IsKeywordNews \”:\ “1 \” \ “KeywordStartDt \”:\ “\” \ “KeywordEndDt \”:\ “\”} ]}“)
无法将'__NSCFString'(0x10abdf320)类型的值转换为'NSDictionary'(0x10abe0108)。

任何帮助将不胜感激!

+0

放断点,并检查其行抛出这个错误? –

+0

让json =试试NSJSONSerialization.JSONObjectWithData(data !, options:.AllowFragments)as! NSDictionary - >这一行是问题..信号SOGABRT –

+0

@MoonJikLee你可以显示你的实际JSON响应,而不是显示我们的Xcode响应。 –

回答

0

试试这个:

do{ 
    if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! NSDictionary 

    print("parse success") 
}catch{ 
    print("parse error") 
} 
+0

看看你是否得到解析错误或成功。 –

+0

“如果让儿子= xxxxx”行有错误。 “条件绑定的初始化必须有可选类型,而不是'NSDoctionary'。 –

+0

'as?NSDictionary'或Better' as?[String:AnyObject]' –

0

试试这个代码:

let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSMutableDictionary 
+0

同样的错误发生。 –

-1

我发现这个代码工作。

if let responseData = responseString!.dataUsingEncoding(NSUTF8StringEncoding) 
{ 
    let json = try NSJSONSerialization.JSONObjectWithData(responseData, options: .AllowFragments)     
    print(json) 
} 

但我不知道确切的原因..感谢所有反正

+0

这不是正确的方法来应对我的答案和给出答案 –

+0

首先你要求回答,然后你正在回答我的答案并发帖作为答案,请你告诉我你的答案和我的答案有什么区别? –

相关问题