【问题标题】:how to convert NSMutableDictionary into NSString?如何将 NSMutableDictionary 转换为 NSString?
【发布时间】:2015-07-22 13:26:58
【问题描述】:

我正在尝试将NSMutableDictionary 转换为NSString。但它会在我的字符串中插入“\”。我正在使用以下代码将NSMutableDictionary 转换为NSString

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:inspectionJson options:0 error:nil];
NSLog(@"ns data is %@",jsonData);
NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSDictionary *dict = @{@"final":json};

这里,

NSMutableDictionary *inspectionJson = {"name":"abc","profession":"IT","images":()}

它给了我输出

dict = {final = "{\"name\":\"abc\",\"profession\":\"IT\",\"images\":[]}";}

我需要的输出是

{final = "{"name":"abc","profession":"IT","images":[]}";}

如何获得所需的输出?请帮忙。

提前致谢。

【问题讨论】:

  • 哦还有一件事,为什么你用\n换行而不是直接按回车???
  • 检查我编辑的答案。
  • 请告诉我有没有其他替代方法来获得像 NSDictionary *dict = final = {"name":"abc","profession":"IT","images":[]} 这样的输出;

标签: objective-c json nsstring nsmutabledictionary


【解决方案1】:
NSDictionary *inspectionJson = @{@"name":@"abc",@"profession":@"IT",@"images":@[]};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:inspectionJson options:0 error:nil];
NSLog(@"ns data is %@",jsonData);
NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"json string:%@", json);
NSDictionary *dict = @{@"final":json};

如果您运行此代码,您可以在控制台中看到实际的 json。

为了编程,请不要将鼠标悬停在json 变量上,并期待字符串而不转义字符串中的特殊字符。

让我再解释一下。假设你有一个字符串

NSString *s1 = @"Make said, he is going to Paris";

你突然发现,嘿,我缺少双引号,所以你将语句更改如下。

NSString *s1 = @"Mike said, "he is going to Paris"";

但是突然编译器会在你脸上抛出错误,“嘿,你不能那样做!”

这是因为"被用来定义字符串,你不能在同一个字符串中使用引号,就像嵌套的cmets /* /* */ */

那你会怎么做?这是您的救星Escape Sequence,它允许您使用字符串中的特殊字符。

所以这是最后的字符串

NSString *s1 = @"Mike said, \"he is going to Paris\"";

【讨论】:

  • 我需要 NSDictionary 对象中的转义字符串,因为我必须使用 AFNetworking 将此数据发送到服务器
  • 请建议我该怎么做?
  • @NishiBansal:试试 Inder 的代码添加 NSLog(@"final: %@",dict[@"final"]);。你应该看到它是正确的。
  • 是的,它给了我正确的输出。但它返回给我的是 NSString 对象而不是 NSDictionary 对象。
【解决方案2】:

"需要转义成字符串,使用时不会出现(/)。

您可以使用此代码进行测试:

NSLog(@"%@",dict[@"final"]);

【讨论】:

    【解决方案3】:

    你可以使用两种方式

    NSString *dict = [NSString stringWithFormat:@"%@", aDictionary];

    你可以使用NSMutableDictionarydescription方法

    希望对你有帮助。

    【讨论】:

    • 如果我使用 [NSString stringWithFormat:@"%@", aDictionary];,那么如何将这个 NSString 转换为 NSDictionary。因为我需要 NSDictionary 对象。
    • dict 是 NSString 对象,但我要求 dict 是 NSDictionary 对象
    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2012-02-10
    • 2013-07-24
    • 2011-04-17
    • 2010-11-20
    • 2010-12-19
    • 2011-04-27
    相关资源
    最近更新 更多