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

代码

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

标题文字

迷茫
迷茫

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

membalas semua(3)
Ty80

Ini tidak perlu diproses, hanya gunakan terus.
Jika ia dikeluarkan terus dan dipaparkan pada Label, ia akan terlepas secara dalaman. Jadi tak payahlah.
Anda boleh merujuk kepada blog yang saya tulis "IOS 7 menggunakan perpustakaan sistem sendiri untuk melaksanakan operasi capaian tak segerak POST JSON"

PHPzhong

Berkenaan sama ada dalam dokumen standard json harus dilepaskan ke /, saya belum mempelajarinya secara terperinci Namun, banyak pelaksanaan penyahkodan sumber terbuka tidak akan menukar / kembali kepada , Saya tidak bersetuju dengan perkara di atas, ia mesti dikendalikan dalam beberapa kes, tetapi saya tidak tahu kaedah pemprosesan NSJSONSerialization rasmi, jadi saya beralih kepada jsonkit sumber terbuka untuk memintas masalah ini

伊谢尔伦

Apple sangat berubah-ubah dan boleh diganti secara manual, serupa dengan:

NSDictionary *policy = ....;
NSData *policyData = [NSJSONSerialization dataWithJSONObject:policy options:kNilOptions error:&error];
if(!policyData && error){
    NSLog(@"Error creating JSON: %@", [error localizedDescription]);
    return;
}

//NSJSONSerialization converts a URL string from http://... to http:\/\/... remove the extra escapes
policyStr = [[NSString alloc] initWithData:policyData encoding:NSUTF8StringEncoding];
policyStr = [policyStr stringByReplacingOccurrencesOfString:@"\/" withString:@"/"];
policyData = [policyStr dataUsingEncoding:NSUTF8StringEncoding];

Lihat:
cara untuk menghalang NSJSONSerialization daripada menambah escape tambahan dalam URL
NSJSONSerialization serialization bagi rentetan yang mengandungi garis miring ke hadapan / dan HTML dilepaskan secara salah

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan