如何解析JSON字符串中的newLine字符

时间:2011-10-15 07:17:56

标签: iphone json parsing ios4 ios-simulator

我正在尝试解析此字符串....但由于“message_of_the_day”键,JSON无法识别字符串,因为它包含newLine字符(\ n)。我会怎样解析这个JSON字符串,所有JSON web服务的其余部分对我来说都很好。

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 个答案:

答案 0 :(得分:3)

只有一种简单的方法对我有用。 问题在于从iPhone发布数据,如果我用来输入一些新行字符,则会产生问题&更多的是,同样的数据也需要在网站上显示,它试图用\ n替换\ n标签,因为它也很容易在网站上解析。

以下是代码段:

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

我需要使用br,因为同样的Web服务数据也需要在网站中使用。

我不确定这样做的方法,但是它解决了我在网站和iPhone上的问题。

答案 1 :(得分:2)

尝试在解析时将“\ n”替换为其他字符,并在将此值分配给某个控件之前再次使用“\ n”替换这些字符。

答案 2 :(得分:1)

只有@“\ n”replaceby @“”在objective-c中不起作用,而不是@“\ b”, 我遇到了同样的问题。

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

这将删除由html页面创建的所有回车和换行符。

我解决了这个问题。 :)