2013-02-21 4 views
0

Я новичок в JSON и не понимаю, почему это не удается. JSON действителен в соответствии с инструментами проверки онлайн, но NSJSONSerilization говорит, что строка недействительна. Почему это недействительно?Почему этот JSON недействителен с помощью NSJSONSerialization?

NSString* JSON = @"{\"Questionnaire\":{\"questionnaireid\":1,\"modifiedDate\":\"2012-12-28 15:27:00\"}}"; 

if (![NSJSONSerialization isValidJSONObject:JSON]) { 
    return nil; 
} 

NSError *jsonParsingError = nil; 
NSDictionary* data = [NSJSONSerialization dataWithJSONObject:JSON options:NSJSONReadingMutableContainers error:&jsonParsingError]; 
+0

увидеть мой отредактированный ответ. Удачи! –

ответ

2

Почему вы сделали сериализацию, когда вы уже создали JSON самостоятельно?

Что вы должны сделать:

NSData *jsonPayload = [JSON dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonPayload 
options:kNilOptions error:&error]; 
+0

Я думал назад. Спасибо за помощь. –

1

Поскольку JSON объект должен быть типа NSArray или NSDictionary в то время как вы передаете NSString.

От docs:

Объект, который может быть преобразован в формат JSON должен обладать следующими свойствами :

  • Объект верхнего уровня является NSArray или NSDictionary.
  • Все объекты являются экземплярами NSString, NSNumber, NSArray, NSDictionary или NSNull.
  • Все словарные ключи являются экземплярами NSString.
  • Номера не NaN или бесконечность.

UPDATE

Вы, вероятно, хотите сделать это:

NSData *jsonData = [JSON dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; 
+0

тоже, данныеWithJSONObject возвращает NSData * нет NSDictionary * – Daniel

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