2016-09-23 4 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] \", \ "UserName \": \ "test1 \", \" Pwd \ ": \" v + Mb90ZS + Y5Qt9DfuBcJtQ == \ "\ "Телефон \": \ "\", \ "AppKey \": \ "\", \ "LoginDt \": \" 9/23/2016 1:12:18 PM \ ", \" LogoutDt \ ": \" 9/1/2016 10:36:02 AM \ ", \" RegDt \ ": \" 8/31/2016 9:26: 04 AM \ ", \" DelDt \ ": \" \ ", \" KeywordTime \ ": \" 60 \ ", \" KeywordEnabled \ ": \" 1 \ ", \" FastEnabled \ ": \" 1 \ », \ "KeywordStartTime \": \ "8:30:00 \", \ "KeywordEndTime \": \ "15:30:00 \", \ "FastStartTime \": \ "08: 00: 00 \", \ "FastEndTime \": \ "15:30:00 \", \ "IsFirst \": \ "NOT_FIR СТ \», \ "IsFastNews \": \ "1 \", \ "IsKeywordNews \": \ "1 \", \ "KeywordStartDt \": \ "\", \ "KeywordEndDt \": \ "\"} ]} ")
Не удалось передать значение типа '__NSCFString' (0x10abdf320) в 'NSDictionary' (0x10abe0108).

Любая помощь была бы принята с благодарностью!

+0

ставить бряк и проверить, какая линия бросает эту ошибку? –

+0

let json = попробуйте NSJSONSerialization.JSONObjectWithData (данные !, опции: .AllowFragments) как! 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

"if let son = 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

Сначала вы попросите ответа, а затем вы справитесь с моим ответом и отправкой в ​​качестве ответа, можете ли вы рассказать мне, в чем разница между вашим ответом и моей? –