2013-04-16 2 views
5
{"User":{"id":"42","name":"martin"}} 

Преобразование мой NSData в NSString возвращает этот JSON, который кажется вполне справедлива, однако метод:NSJSONSerialization возвращение ноль

[NSJSONSerialization isValidJSONObject:data] 

говорит это не действительный объект JSON.

Может ли кто-нибудь указать на ошибку, которую я сделал или думаю о причине, почему это происходит?

ответ

9

Держу пари, что в вашей строке, например, есть непечатаемый символ, что делает данные недействительными.

Объявите NSError* error переменной затем вызвать [NSJSONSerialization JSONObjectWithData:data options:0 error:&error] метод, чтобы попытаться преобразовать JSON: очевидно, если данные считаются недействительными, то он вернет nil, но, по крайней мере, вы будете иметь описание того, что случилось в NSError* error переменной после этого.

NSData* data = ... // your data 
NSError* error = nil; // Declare a variable to hold the error upon return 
id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; // Try to convert your data 
NSLog(@"obj: %@ ; error: %@", error); // Log the decoded object, and the error if any 
+0

Я поставил ошибку, и он сказал, что это не так, как-то это неожиданно сработало ... странно ... так или иначе это работает сейчас! – Alex

+0

У меня была такая же проблема, и я получаю: '(Unescaped управляющий символ вокруг символа 43579.) UserInfo = 0x9b78e30 {NSDebugDescription = Неэкранированный управляющий символ вокруг символа 43579.}'. Как это исправить? – marciokoko

+0

Исправить исходные данные JSON. Бьюсь об заклад, JSON, который вы пытаетесь декодировать, является недопустимым JSON-данными в начале и имеет недопустимый символ со смещением 43579, как объясняет ошибка. Вставьте свой JSON в http://jsonlint.org/, чтобы проверить его, например, он недействителен или некорректен JSON. Если это недействительно JSON, вам, очевидно, нужно исправить его в источнике _ (исправить содержимое файла 'file.json', если вы читаете« NSData »из такого файла или исправляете строку, сгенерированную вашим WebServer, если это веб-сервис, который возвращает этот JSON в ваше приложение в эту 'NSData' и т. д.) _ – AliSoftware

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