検索

ホームページ  >  に質問  >  本文

objective-c - iOS中使用NSSerialization把对象转为JSON字符串后,多出来反斜杠的问题

代码

   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字符串,所以还是希望正面解决掉。

标题文字

迷茫迷茫2768日前912

全員に返信(3)返信します

  • PHP中文网

    PHP中文网2017-04-22 09:01:59

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

    返事
    0
  • PHPz

    PHPz2017-04-22 09:01:59

    json標準ドキュメントの

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-22 09:01:59

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

    リーリー

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

    返事
    0
  • キャンセル返事