2015-07-29 2 views
1

Невозможно разобрать ошибку приема JSON NSCocoaErrorDomain Code = 3840 Мой JSON правильно проверен и закодирован в utf-8. Я использую этот кодНевозможно разобрать JSON с NSJSONSerialization

let request: NSURLRequest = NSURLRequest(URL: url) 

let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in 
    print(data) 
    do { 
    let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options:[NSJSONReadingOptions()]) as? [String: AnyObject] 
    print(jsonDictionary) 

    } catch { 
     print(error) 
    } 
}) 
dataTask?.resume() 
+0

И ваш JSON действительно словарь на верхнем уровне или NSArray? Не могли бы вы показать свой JSON? – Larme

+0

его массив, но я также попробовал [AnyObject] вместо [String: AnyObject] –

+0

Вы используете 'swift2' –

ответ

0

Этот код прекрасно работает для меня был немного рефакторинга, чтобы сделать его более удобным для чтения и добавил URL, например:

let request = NSURLRequest(URL: NSURL(string: "https://api.ipify.org?format=json")!) 
let session = NSURLSession.sharedSession() 
let dataTask = session.dataTaskWithRequest(request) { (data, _, _) in 
    print(data) 
    do { 
     let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) 
     print(jsonDictionary) 
    } catch { 
     print(error) 
    } 
} 
dataTask.resume() 

(Этот код записывается в Swift 2,0)

Это дает следующий результат: (я удалил отливку типа, чтобы быть уверенным, чтобы получить что-то)

Optional(<7b226970 223a2239 322e3130 332e3130 362e3838 227d>) 
{ 
    ip = "92.103.106.88"; 
} 

Так что это должно происходить из данных, которые вы разыгрываете. Разве вы не можете просто отдать его нам, чтобы мы могли попытаться найти, что случилось?

+0

все еще не работает, такая же ошибка –

+0

Просто попробовал мой код с вашим URL-адресом, и он работал ... https://www.dropbox.com/s/rche6d4yz94ije1/Capture%20d%27%C3%A9cran%202015-07- 29% 2011.47.19.png? Dl = 0 – Fantattitude

+0

постарается и сообщит вам –

1

Ваш json есть тип коллекции [AnyObject] нет тип [String: AnyObject]. См. Код ниже.

let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) as? [AnyObject] 

Надеюсь, что это поможет!

+0

уже сделал это –

+0

Пожалуйста, дайте мне знать ваш результат: p –

+0

та же ошибка, что и в случае с нормальным случаем –

Смежные вопросы