Как разобрать символы newLine в строке JSON - PullRequest
0 голосов
/ 15 октября 2011

Я пытаюсь разобрать эту строку .... но из-за ключа "message_of_the_day" , JSON не может распознать строку, так как она содержит символы новой строки (\ n). Как бы я проанализировалэта строка JSON, остальные веб-сервисы JSON прекрасно работают для меня.

Ответ Json:

{"tblMessageOfTheDay":[{"customer_id":"1659","application_id":"1001","message_of_the_day":"Set your Message



GDSFSFDS
SF
ADS
DSFS
F"}]}

Код:

Я приложил немало усилий, чтобы решить эту проблему ....., но проблема все еще та же.

-(void)DataCollectedSuccessfully:(NSString *)responseString
{

     NSDictionary *results = [responseString JSONValue]; // Main code .. with didn;t work
    id result = [responseString JSONValue]; // I tried for it, it that object won;t get recognized, but this trick didn't work.
    NSLog(@"%@",result);

    NSDictionary *results = [[responseString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] JSONValue]; // Even tried to remove the newLine characters & extra space.

 }

Ошибка:

-JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=5 \"Unescaped control character '0xa'\" UserInfo=0x6235db0 {NSLocalizedDescription=Unescaped control character '0xa'}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: message_of_the_day\" UserInfo=0x6224a50 {NSUnderlyingError=0x6235e00 \"Unescaped control character '0xa'\", NSLocalizedDescription=Object value expected for key: message_of_the_day}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Expected value while parsing array\" UserInfo=0x6224a80 {NSUnderlyingError=0x6235d20 \"Object value expected for key: message_of_the_day\", NSLocalizedDescription=Expected value while parsing array}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: tblMessageOfTheDay\" UserInfo=0x6224af0 {NSUnderlyingError=0x6224ab0 \"Expected value while parsing array\", NSLocalizedDescription=Object value expected for key: tblMessageOfTheDay}"
)

Ответы [ 3 ]

3 голосов
/ 30 августа 2012

Есть только один простой способ, который сработал для меня. Проблема была с отправкой данных с iPhone, если я использую для ввода какого-либо символа новой строки, это создает проблему и многое другое, те же данные должны были отображаться и на веб-сайте, который пытался заменить \ n на
пометить как, его тоже можно легко проанализировать на сайте.

Вот фрагмент кода:

[[messageView text] stringByReplacingOccurrencesOfString:@"\n" withString:@" br "];

Мне нужно использовать br, так как те же данные веб-службы должны использоваться и на веб-сайте.

Я не уверен, как это сделать, но да. Это решило мою проблему с обеих сторон, то есть с веб-сайтом и с iPhone.

2 голосов
/ 15 октября 2011

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

1 голос
/ 10 апреля 2013

Только @ "\ n" replaceby @ "" не будет работать в target-c, а не @ "\ b", у меня была такая же проблема.

NSString *jsonstring = [jsonStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@""];
jsonstring = [jsonstring stringByReplacingOccurrencesOfString:@"\t" withString:@""];

это удалит все возврат каретки и новую строку, созданные html-страницей.

Я решил проблему этим.:)

...