我正在尝试解析此字符串....但由于“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}"
)
答案 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页面创建的所有回车和换行符。
我解决了这个问题。 :)