[英]Objective-C - How to convert NSString to escaped JSON string?
[英]How to convert NSString to JSON by escaping all special characters using Objective-C
我創建了一個函數來制作完美的JSON字符串:
-(NSString *)NSStringToJson:(NSString *)str
{
NSMutableString *s = [NSMutableString stringWithString:str];
[s replaceOccurrencesOfString:@"\"" withString:@"\\\\" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"/" withString:@"\\/" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"\n" withString:@"\\n" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"\b" withString:@"\\b" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"\f" withString:@"\\f" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"\r" withString:@"\\r" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"\t" withString:@"\\t" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"\{" withString:@"\\{" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
[s replaceOccurrencesOfString:@"}" withString:@"\\}" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [s length])];
return [NSString stringWithString:s];
}
問題
上面的函數無法將給定的以下字符串轉換為JSON字符串
üáñ~!@#$%^&*()_+-=[\]{}|;’:”,./<>?~
{“ country”:“ 233”,“ email”:“”,“ first_name”:“üáñ〜!@#$%^&*()_ +-= [] |;':”,。/ <>? 〜“,” last_name“:”“,
“ phone_mobile”:“”,“令牌”:“ 111”}
我正在使用JSON在線解析器來驗證字符串,並且解析器顯示錯誤。
這太荒謬了。 使用NSJSONSerialization
。
您距離需要轉換的所有內容都近在咫尺,並且您正在轉換不需要轉換的內容。 除非您的目標是編寫一個比現有的JSON序列化器更好的JSON序列化器,否則請手動進行此操作,而不是使用專門為您設計的類來進行杯子化。
我不太明白為什么您嘗試轉換帶有兩個反斜杠的雙引號。 當然,您根本不處理字符串中的反斜杠。 那就是問題,您編寫自己的錯誤代碼而不是使用適當的庫。 (另一個問題是您正在編寫錯誤的代碼,我敢打賭您實際上沒有查閱包含JSON標准的RFC)。
如果您使用的是NSURLConnection
則可以使用以下代碼
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error;
NSDictionary *output = [NSJSONSerialization
JSONObjectWithData:receivedData
options:kNilOptions
error:&error];
NSLog(@"output : %@",output);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.