Ошибка парсера JSON - PullRequest
       19

Ошибка парсера JSON

0 голосов
/ 02 марта 2010

Я добавил анализатор JSON в свой проект и попытался проанализировать строку JSON. На большинстве строк это работает как надо, но иногда это не так. Моей первой мыслью было, что строка JSON сформирована неправильно, но я проверил ее несколькими валидаторами JSON, и все они сказали, что это правильно. Я дополнительно проверил строку на наличие разрывов строк, но в строке их нет.

Это мой код:

// My JSON string  
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

NSError *error = [[NSError alloc] init];

// result is null because of error
NSDictionary *result = [parser objectWithString:json_string error:&error];

Когда я смотрю в отладчике, я получаю следующее в моей переменной ошибки:

Ошибка Domain = org.brautaset.JSON.ErrorDomain Code = 3 UserInfo = 0x5168270 «Ожидается значение объекта для ключа: элементы»

Это указывает на то, что с элементами в строке что-то не так, но, как я уже сказал сверху, я проверил строку JSON с несколькими валидаторами, и все говорят, что все в порядке.

У кого-нибудь есть идеи, что может быть не так?

Спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 02 марта 2010

Да, может быть в этом проблема. Символы, такие как \ u003c, являются экранированными Unicode и исходят из потока orinal, поэтому кодировка должна быть в порядке Есть ли способ преобразовать их в json-совместимый формат?

0 голосов
/ 02 марта 2010

Я проверил синтаксический анализатор TouchJSON на http://code.google.com/p/touchcode/wiki/TouchJSONHowTo, и он способен правильно анализировать строку

Спасибо всем за помощь. : -)

0 голосов
/ 02 марта 2010

Трудно сказать, но из строки JSON «элементы» можно увидеть первые элементы, в которых используются забавные символы, например:

"content":"\u003cp\u003e\u003ca href\u003d

Возможно, это сбивает с толку парсер? Или, возможно, неправильная кодировка?

Что вы видите, когда проверяете значение json_string в отладчике? Например:

NSLog(json_string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...