我想将NSDictionary转换为json string.everything工作正常,我有一个小问题,描述如下: 我有以下代码将NSDictionary转换为NSString:
-(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 :(得分:22)
Nsdictionary - to - string
NSError * err;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:response options:0 error:&err];
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
string - to - NSDictionary
NSError * err;
NSDictionary * response = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[NSData dataFromString:str] options:NSJSONReadingMutableContainers error:&err];
答案 1 :(得分: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];
答案 2 :(得分:1)
使用选项PrettyPrinted转换为对数据的响应,然后使用utf8编码将数据转换为字符串 代码:
NSDictionary *dictResponse = responseObject[0];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictResponse options:NSJSONWritingPrettyPrinted error:nil];
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
答案 3 :(得分:0)
将JSON对象转换为String将转义正斜杠。这就是为什么在结果中添加反斜杠的原因。
如果将字符串转换回JSON对象并记录对象,则可以按预期查看结果。因此,您可以验证字符串是否有任何问题。
答案 4 :(得分: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];
}
}