2014-10-17 2 views
1

Я реализовал XMPP в своем приложении ios, когда кто-то отправляет сообщение, которое получает данные xml, и я получаю сообщение от этого xml и строю его.Как разобрать полученную строку в json в ios

NSString *body = [[message elementForName:@"body"] stringValue]; 

Теперь * тело содержит строку JSON и я разбор этой строки в объект JSON, используя эту строку

NSData *data = [body dataUsingEncoding:NSUTF8StringEncoding]; 
// messageJSON is NSDictionary 
messageJSON=[NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 

хорошо работают в условиях обычного текста, но всякий раз, когда кто-нибудь посылает новую строку в середина сообщения оно дает нулевое пожалуйста решить мою проблему .. :-(

заранее спасибо

OUTPUT

{"message":{"msg_type":"chat_success","msg_content":{"chat_id":"2","chat_message":"@34%*:%:%;% 





Fjfjfjj","sender_id":"24","chat_date_time":"1413538998"}} 

ОШИБКА

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Unescaped control character around character 94.) UserInfo=0x7fdf81c3a790 {NSDebugDescription=Unescaped control character around character 94.} 
+0

Таким образом, он терпит неудачу, когда недействителен JSON? Вы ничего не можете с этим поделать. – Droppy

+0

Итак - сбросьте вход и посмотрите, что происходит вокруг персонажа. 94. –

+0

Пожалуйста, покажите, как выглядит строка в случаях с и без новой строки. –

ответ

0

Я считаю, что проблема исходит от преобразования XML < -> JSON.

в XML, возврат каретки и линейные каналы являются действительными символами (игнорируются в основном в пользу <p> и <br/>). В формате JSON, подача возврат каретки/линия должна быть представлена ​​\n (или системы) соответствующей

Я не уверен, если это поможет, но попробуйте заменить любой \n в строке с \\n, прежде чем Сериализация его.

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