如何构建特定格式的 JSON 字符串? [关闭]

Posted

技术标签:

【中文标题】如何构建特定格式的 JSON 字符串? [关闭]【英文标题】:How to build JSON string of particular format? [closed] 【发布时间】:2013-10-10 16:57:14 【问题描述】:

我想使用 NSJSONSerialization 格式化以下格式的 JSON 字符串:


"data":"userName":"rrullo","password":"rrullo!",
"meta":"appId":"S3B9CU4R2B9JTXV9254Y","appVersion":"2.1.0","serverVersion":"1.1.0","platform":"ios","deviceToken":"1234","tm_session_id":"BB0000001234"

但我不知道如何实现这种格式。谁能帮帮我......

【问题讨论】:

1) 在 json.org 学习 JSON 语法。 2)创建外层字典来表示最外层的JSON“对象”。 3)创建两个内部字典并将它们插入到外部字典中。 4) 使用 NSJSONSerialization 进行序列化。 【参考方案1】:

首先用您的“元”和“数据”信息填充两个 NSDictionaries。然后将它们添加到主 NSDictionary 中,然后使用 NSJsonSerialization 进行序列化

NSDictionary * metaDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"appId", @"S3B9CU4R2B9JTXV9254Y", @"appVersion", @"2.1.0", @"serverVersion", @"1.1.0", @"platform", @"iOS",..., nil];

NSDictionary * dataDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"userName", @"rrullo", @"password", @"rrullo!", nil];

NSDictionary * mainDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"data", dataDict, @"meta", metaDict, nil];

现在您可以使用 NSJsonSerialization 将该 mainDict 转换为 NSString

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

希望对你有帮助

【讨论】:

非常感谢...这很有帮助... @RashmiRanjanmallick 如果对您有用,请将其标记为正确答案。【参考方案2】:
NSDictionary dictData = @ @"UserName":@"rrullo", @"password":@"rrullo!";
NSDictionary dictMeta = @ @"appId":@"S3B9CU4R2B9JTXV9254Y", etc;
NSDictionary dictJSON = @ @"data":dictData, @"meta":dictMeta ;

NSError *error = nil; 
NSData *dataJSON = [NSJSONSerialization dataWithJSONObject:dictJSON 
                                                   options:NSJSONWritingPrettyPrinted 
                                                     error:&error];
if (!error) 
    NSString *jsonString = [[NSString alloc] initWithData:dataJSON encoding:NSUTF8StringEncoding];
 else 
    NSLog(@"Error: %@", error);

【讨论】:

@RashmiRanjanmallick - 如果您不了解代码的作用,请不要感谢他。当人们尝试从其他来源复制/编辑 JSON 内容时,他们几乎总是跑得很快。

以上是关于如何构建特定格式的 JSON 字符串? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 JSON 字符串更改为特定格式?

数据库里查出的数据如何转化成特定的json格式

格式化字符串内的数字[关闭]

如何在PHP中将对象转换为特定格式的数组

Angular 7检查JSON解析是不是返回特定对象的正确方法[关闭]

如何从 SnowFlake 中的 JSON 字符串解析特定数据?