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

代码

   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

これは処理する必要はなく、そのまま使用してください。
直接取り出してラベルに表示すると内部でエスケープされます。だから、気にしないでください。
私が書いたブログ「IOS 7 はシステム独自のライブラリを使用して POST JSON 非同期アクセス操作を実行する」を参照してください

いいねを押す +0
PHPzhong

json標準ドキュメントの

について そのため、場合によっては上記の考え方に同意できないのですが、公式のNSJSONSerializationの処理方法が分からないので、 に切り替えました。この問題を回避するには、オープンソースの jsonkit を使用してください是否应该转义成/, 我并没细究. 但是很多开源实现 decode 的时候是不会将/转回

いいねを押す +0
伊谢尔伦

Apple は非常に気まぐれなので、次のように手動で置き換えてください:

リーリー

参照:
NSJSONSerialization が URL に余分なエスケープを追加しないようにする方法
スラッシュを含む文字列の NSJSONSerialization シリアル化 / および HTML が誤ってエスケープされる

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート