iPhone - проблема с побегом при разборе JSON - PullRequest
3 голосов
/ 16 мая 2011

Я использую объективную библиотеку синтаксического анализа JSON и столкнулся с некоторой проблемой.Мой веб-сервис возвращает ответ JSON.Мой парсер не работает, если в строке ответа есть escape-символ.Ниже приведен ответ, который я получаю с сервера. JSON response from the server

Теперь, если вы наблюдаете строку "item_name": "Потратьте $ 10andget $ 24worthofdonutsfromJim \ 'sDonutShop", есть escape-символ JimПончик .Мой парсер не может разобрать это за исключением.

 -JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=8 \"Illegal escape sequence '0x27'\" UserInfo=0x79cc420 {NSLocalizedDescription=Illegal escape sequence '0x27'}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: item_name\" UserInfo=0x79cc510 {NSUnderlyingError=0x79cc470 \"Illegal escape sequence '0x27'\", NSLocalizedDescription=Object value expected for key: item_name}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: parameters\" UserInfo=0x79cc5c0 {NSUnderlyingError=0x79cc540 \"Object value expected for key: item_name\", NSLocalizedDescription=Object value expected for key: parameters}"

Все, что я использую, это JSON.h

NSDictionary * responseDic = [responseString JSONValue];

Кто-нибудь, пожалуйста, помогите мне !!Спасибо !!

1 Ответ

5 голосов
/ 16 мая 2011

escape-последовательность \' недопустима в формате JSON. См. json.org .

Вы должны поднять ошибку с сопровождающими веб-сервиса.

В качестве обходного пути вы можете попробовать заменить последовательность на один ', например,

NSString* hackedString = [originalString stringByReplacingOccurrencesOfString: @"\\'" withString: @"'"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...