在NSdictionary中有一个json的价值?

时间:2014-03-18 15:01:28

标签: ios iphone objective-c

我希望args的值是json格式,我该怎么做?请帮我 我使用这个网站(http://jsonformatter.curiousconcept.com/)来检查我的json格式是否有效(正确)

{"密码":" 12345678","电子邮件":" peoplesfortest@gmail.com"} ===>有效(我希望这个在args中) " {\"密码\":\" 12345678 \" \"电子邮件\":\" peoplesfortest @的Gmail。 COM \"}&#34 ;; ===>无效

PS:我希望我的结果如下:

dict2 = {
    args = {"password":"12345678","email":"peoplesfortest@gmail.com"}
}

args的值

//我的代码:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"peoplesfortest@gmail.com", @"email", @"12345678", @"password", nil];

    NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];

    NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"\n\n output = %@", output);
    //print out => output = {"password":"12345678","email":"peoplesfortest@gmail.com"}


    NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:output , @"args", nil];
    NSLog(@"\n\n dict2 = %@", dict2);
    //print out => dict2 = {args = "{\"password\":\"12345678\",\"email\":\"peoplesfortest@gmail.com\"}";}

4 个答案:

答案 0 :(得分:1)

你所拥有的不是以你期望的方式记录,但你确实拥有你所描述的内容 - 你的例子中args的值是一个json字符串。

如果您确实希望日志记录以您期望的方式输出,那么您只想用dict初始化dict2作为键“args”的值:

NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:dict , @"args", nil];

在这种情况下,您实际上只是嵌入了词典。如果你愿意,那些可以编码为json。

NSData *data = [NSJSONSerialization dataWithJSONObject:dict2 options:0 error:&error];

注意:混淆可能来自在记录NSDictionary时在幕后应用的toString转换。如果你在NSJSONSerialization之后改为记录NSString,你可能会更接近你想要的。

答案 1 :(得分:0)

这个怎么样:

NSDictionary *dict = @{
    @"args" : @{@"password":@"12345678", @"email":@"peoplesfortest@gmail.com"}

};

答案 2 :(得分:0)

您想将NSDictionary转换为Json格式的NSString,对吗?

NSDictionary *your_data_dictionary = @{@"password": @"12345678", @"email": @"peoplesfortest@gmail.com"};

NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:your_data_dictionary options:NSJSONWritingPrettyPrinted error:&error];
NSString *result = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSLog(@"%@", result); 

Logoutput:

{
  "email" : "peoplesfortest@gmail.com",
  "password" : "12345678"
}

答案 3 :(得分:0)

这看起来很困惑。原始代码的作用:它需要一个带有两个键“password”和“email”的字典,并将其转换为JSON作为NSString。然后它创建另一个字典,带有一个键“args”和一个字符串,并将其转换为JSON。碰巧,字符串包含JSON,但这没关系,它只是一个字符串。转换工作绝对正常。这只是非常不寻常的JSON。

mwu的答案似乎完全正确:

NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:dict , @"args", nil];

创建字典,然后应使用NSJSONSerialization将其转换为JSON。 NSLog不输出正确的JSON!将NSLog的输出粘贴到JSON验证程序中工作。