objective-c - iOS中使用NSSerialization把对象转为JSON字符串后,多出来反斜杠的问题
迷茫
迷茫 2017-04-22 08:59:59
0
3
908

代码

   NSDictionary *dic = @{@"url": @"http://..."};                                                                                                                                             
   NSLog(@"%@", dic);
   NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
   NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
   NSLog(@"%@", jsonString);

执行结果:

2014-06-12 14:44:19.427 main[64877:1322484] {                                                                                                                                              
     url = "http://...";                                                                                                                                                                    
 }                                                                                                                                                                                          
 2014-06-12 14:44:19.429 main[64877:1322484] {                                                                                                                                              
   "url" : "http:\/\/..."                                                                                                                                                                   
 }                         

转换后的json字符串中url地址被转义了 :(

使用字符串替换可以事后弥补:

[jsonString stringByReplacingOccurrencesOfString:@"\\" withString:@""];

如何事先预防呢?

PS:在和UIWebView进行js调用时需要不转义的json字符串,所以还是希望正面解决掉。

标题文字

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(3)
Ty80

처리할 필요 없이 바로 사용하면 됩니다.
직접 꺼내서 Label에 표시하면 내부적으로 이스케이프됩니다. 그러니 귀찮게 하지 마세요.
제가 작성한 블로그 "IOS 7은 시스템 자체 라이브러리를 사용하여 POST JSON 비동기 액세스 작업을 수행합니다"를 참조하세요.

PHPzhong

json 표준 문서의 /으로 이스케이프해야 하는지 여부에 대해서는 자세히 연구하지 않았습니다. 그러나 많은 오픈 소스 디코딩 구현에서는 /을 다시 로 변환하지 않습니다. , 위에서 말한 내용에 동의하지 않습니다. 경우에 따라 처리해야 하지만 공식적인 NSJSONSerialization 처리 방법을 모르기 때문에 이 문제를 피하기 위해 오픈 소스 jsonkit으로 전환했습니다

伊谢尔伦

Apple은 변덕스럽기 때문에 다음과 같이 수동으로 교체할 수 있습니다.

으아악

참조:
NSJSONSerialization이 URL에 추가 이스케이프를 추가하는 것을 방지하는 방법
슬래시가 포함된 문자열의 NSJSONSerialization 직렬화 및 HTML이 잘못 이스케이프됩니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿