2012-02-08 3 views
0

В ответе JSON от веб-службы строка содержит символы HTML. например «текст»: «\ x3ca href \ x3d \ x22http: // word ....» и т. Д.Parsing JSON string IOS - HTML-символы

Я использую синтаксический анализатор SBJSON. Синхронизация (преобразование в словарь) становится неудачной.

Я думаю, мне нужно заменить эти символы HTML фактическими символами, прежде чем давать парсер SBJSON. Есть ли какой-либо метод утилиты для одного и того же?

Любая помощь действительно оценена.

-mia

ответ

0

Ваш первый JSON символ неправильно. '\ x3ca' не является допустимым символом JSON. Ваша кодировка идет не так. Эквивалент JSON для '<' равен '\ x3c'. Если вы замените в своем примере «\ x3ca» на «\ x3c», вы получите результат синтаксического анализа «< href =« http: // word ... » Мое предложение - проверить, как веб-служба кодирует специальные символы, такие как <,> & = и так далее в ответ он посылает мне кажется, что это где ошибка

(и как круглые скобки, те JSON символы, а не HTML символы: P)..

+0

Прежде всего, это не мой веб-сервис лед :-). Его ответ от неофициального словаря API Google Google. Ваше предложение отлично работало (спасибо за это), но синтаксический анализ все еще не удался. Я пробовал вот так: NSString * temp = @ "{\" text \ ": \" \ x3c href \ x3d \ x22http: // word .... \ "}"; NSDictionary * tempdict = [parser objectWithString: temp error: nil]; NSLog (@ "json string =% @", temp); NSLog (@ "convert dict =% @", tempdict); AND oupput is json string = {"text": " mia

+0

попробуйте использовать параметр ошибки, а также посмотрите, что он сказал. На вашем примере попробуйте что-то вроде этого: NSError * error = nil; NSString * temp = yourString; NSDictionary * tempDict = [parser objectWithString: temp error: & error]; и запишите ошибку. – Vlad

+0

Это ошибка «error = Error Domain = org.brautaset.SBJsonParser.ErrorDomain Code = 0» Неверный запуск токена [h] «UserInfo = 0x6b2e960 {NSLocalizedDescription = Незаконный запуск токена [h]} – mia

0

SBJSON ожидает, что ключи будут заключены в "", иначе он будет жаловаться на любой первый символ первого ключа.