2014-11-21 112 views
8

我想將NSDictionary轉換爲json string.everything工作正常,我有一個小問題描述如下: 我有一個下面的代碼轉換的NSDictionary到的NSString:問題將NSDictionary轉換爲json字符串,用/替換//

-(NSString *)dictToJson:(NSDictionary *)dict 
{ 
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil]; 
    return [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding]; 
} 

我打電話的方法:

NSLog(@"%@", [self dictToJson:@{@"hello" : @"21/11/2014 10:07:42 AM"}]); 

以下是本次的NSLog輸出:

{ 
    "hello" : "21\/11\/2014 10:07:42 AM" 
} 

我期待下面的輸出,我怎麼能實現它:

{ 
     "hello" : "21/11/2014 10:07:42 AM" 
} 

可以通過使用stringByReplacingOccurrencesOfString方法來完成,但我不希望這樣的使用。有沒有其他辦法可以達到同樣的效果?

+0

是有什麼問題,如果你只是呼籲字典'description'方法? – 2015-06-12 21:36:37

回答

1

將JSON對象轉換爲String將轉義正斜槓。這就是爲什麼反斜槓會添加到結果中。

如果將字符串轉換回JSON對象並記錄該對象,則可以按預期查看結果。因此,您可以驗證,字符串沒有任何問題。

0

添加此

-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint; 



-(NSString *)dictToJson:(NSDictionary *)dict 
    { 

     NSData *jsonData = [NSJSONSerialization dataWithJSONObject: dict 
                options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0) 
                error:&error]; 

    if (! jsonData) { 
     NSLog(@"bv_jsonStringWithPrettyPrint: error: %@", error.localizedDescription); 
     return @"{}"; 
    } else { 
     return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
    } 

    } 

請參閱本Generate JSON string from NSDictionary in iOS

2

試試這個,

NSData *json = [NSJSONSerialization dataWithJSONObject:dict 
               options:0 
               error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding]; 
// This will be the json string in the preferred format 
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"]; 

// And this will be the json data object 
NSData *processedData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
21

的NSDictionary - 到 - 字符串

NSError * err; 
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:response options:0 error:&err]; 
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

串 - 到 - NSDictionary中

NSError * err; 
NSDictionary * response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[NSData dataFromString:str] options:NSJSONReadingMutableContainers error:&err];