服务器是php写的,输出的json格式肯定是对的,用其他工具也是验证过的,编码是utf8的,但是在ios上就是解析不了,解析代码如下 +(NSDictionary *)DictionaryWithUrl:(NSString *)url { NSError *error; //加载一个NSURL对象 NSString* T_url = [url stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSURL* URL=[NSURL URLWithString:T_url]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; //NSLog(@"%@",request); //将请求的url数据放到NSData对象中 NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中 NSDictionary* dict= [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:&error]; NSLog(@"%@",error); return dict; } json数据是这样的 {"0":[{"name":"编程之美:微软技术面试心得","no":" TP311/BCZ ","borrow":"馆藏复本:6 可借复本:3","author":" 《编程之美》小组著 电子工业出版社 2008 (0) ","url":"item.php?marc_no=0000381253"}]} 解析不了报的错是这样的 2014-07-16 13:00:09.504 Found[10664:60b] Error Domain=NSCocoaErrorDomain Code=3840 “The operation couldn’t be completed. (Cocoa error 3840.)” (Unescaped control character around character 18.) UserInfo=0x17697630 {NSDebugDescription=Unescaped control character around character 18.}
上述代码中的NSDictionary*dict得到的值是nil,但是response是有值的。
奇怪的是,同样的解析方式,解析同样格式的json是可以正常解析的,甚至,我把本来可以解析的json数据在php页面上输出仍旧解析不了。给我的感觉就似乎是 网页的编码不对,但是查了编码的确是utf8没错,已经纠结我两天了,只能来求各位帮忙
还有nserror的code是3840
|
|
20分 |
没细看你的代码,这样可以解析:
NSString *testString = @"{"0":[{"name":"编程之美:微软技术面试心得","no":"?TP311/BCZ?","borrow":"馆藏复本:6?可借复本:3","author":"?《编程之美》小组著?电子工业出版社?2008?(0)?","url":"item.php?marc_no=0000381253"}]}"; NSDictionary *jsonReturn = [NSJSONSerialization JSONObjectWithData:[testString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil]; |
确定下是否字符集编码转换的问题
|
|
http://www.bejson.com/go.html?u=http://www.bejson.com/jsonview2/可以在这里查看一下你的json是否有错误,如果没有错误,就是解析的问题了,推荐你使用jsonkit第三方类库,
|
|
我也遇到同样的问题 请问楼主目前有解决方案了么
|
|
Unescaped control character around character 18
应该是某个特殊字符串的原因,把服务器返回的NSData转换成字符串看看是不是有换行,回车等特殊字符串,如果与去掉再试试看 |
|
楼主你好,可能你的数据中有中文,在转换的时候出现了问题。
|
|
把response打印出来看看数据有没有问题
|
|
20分 |
可能有\n,我试过有\n解析失败的,你试试replace掉能不能成功
|
通过url有可能会带个头文件,是个xml,例如
“<string xmlns=”http://ooppookid/”>{“0”:[{“name”:”编程之美:微软技术面试心得”,”no”:”?TP311/BCZ?”,”borrow”:”馆藏复本:6?可借复本:3″,”author”:”?《编程之美》小组著?电子工业出版社?2008?(0)?”,”url”:”item.php?marc_no=0000381253″}]}</string>” 直接打印response看一下。 |
|
http://blog.csdn.net/hwak_07/article/details/12109905建议看看这个
|
|
楼主 问题解决否。。我也是同样的问题。。请求过来的NSData 数据有。。但是转换成字符串 或者 字典后就 是NULL
为什么啊。。。。。。。。同样是JSON格式的数据。。。。。 |