2016-04-19 2 views
1

Я делаю простой запрос к API Flickr. Я знаю, что URL-адрес запроса верен и что задача URL-адреса возвращает данные. Тем не менее, когда я пытаюсь:Ошибка NSJSONSerialization

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

in a do, catch block, операция не удалась, но не сбой приложения. Я попытался изменить параметры MutableContainers и AllowFragments, но ничего не работает.

+0

Если вы преобразуете данные в строку с кодировкой UTF8Encoding, строка кажется JSON и действительна? – Larme

+0

Да, это правильно отформатировано – genghiskhan

ответ

1

Возьмите данные и преобразовать его в строку, как это:

let responseString = String(data: data, encoding: NSUTF8StringEncoding) 

Затем вставьте, что через валидатор как jsonlint.com, чтобы увидеть, если вы на самом деле получить действительный JSON.

Я подозреваю, что вы не получаете действительного ответа HTTP от API, и, возможно, вы получаете HTML-текст (или обычный текст), описывающий ошибку?

+0

Я отправил его через это, и он сказал, что это действительно. Однако, когда я распечатываю его на консоли, он отображается как jsonFlickrApi (действительные данные). Это нормально, или это то, что бросает ошибку? – genghiskhan

+0

Можете ли вы опубликовать код и фактический JSON, который вы видите из кодировки NSData? –

+0

responseString печатает как: Необязательно (jsonFlickrApi ({"photos": {"page": 1, "pages": 10, "perpage": 100, "total": 1000, "photo": [{"id": "25954170134" ...... "width_h": "1600"}]}, "стат": "ок"})) – genghiskhan

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