2014-11-21 104 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];