2011-05-16 96 views
3

我正在使用目标C JSON解析库并面临一些问题。我的web服务返回JSON响应。当响应字符串中存在转义字符时,My Parser失败。以下是我从服务器收到的回复。现在JSON response from the serveriPhone - 在JSON解析中逃逸charecter问题

如果观察者行 “ITEM_NAME”: “花$ 10andget $ 24worthofdonutsfromJim \'sDonutShop” 中,有一个转义字符吉姆\ S甜甜圈。我的解析器无法解析这个例外。

-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]; 

有人请帮助我!谢谢 !!

+3

这是JSON的有效转义字符吗? http://www.jsonlint.com/说这是不正确的。有没有机会修复您从中获取数据的Web服务?如果不是,那么我想你可以尝试预处理输入字符串,用'''替换所有'\''。 – 2011-05-16 07:47:29

+0

@Alex - 这应该是一个答案:) – MByD 2011-05-16 07:54:18

+0

@Alex S. ohh。 。但是我的web服务实际上是从数据库中提取一些html字符串并以JSON格式打印出来。我可以预处理字符串,并可以用'替换\',但是你有任何想法,有没有其他一些转义字符在HTMl中使用,这也需要照顾或什么..? – 2011-05-16 07:56:29

回答

5

转义序列\'不是有效的JSON。请参阅json.org

你应该向Web服务的维护者提出一个错误。

作为解决办法,您可以尝试用单个'(例如,

NSString* hackedString = [originalString stringByReplacingOccurrencesOfString: @"\\'" withString: @"'"]; 
+1

是的,我必须改变服务。但是我写了总共10个服务,所以我只是修改了JSON库来为我做这个预处理,并且它的工作正常:-)。 。谢谢 !! – 2011-05-16 10:31:27