如何检索json中键的特定值?
Posted
技术标签:
【中文标题】如何检索json中键的特定值?【英文标题】:How to retrieve specific value of key in json? 【发布时间】:2017-03-26 04:12:48 【问题描述】:这是我的 json 内容。
[
"sha":"30eae8a47d0203ac81699d8fc2ab2632de2d0bba",
"commit":
"author":
"name":"Madhura Bhave",
"email":"mbhave@pivotal.io",
"date":"2017-03-23T23:14:32Z"
,
"committer":
"name":"Madhura Bhave",
"email":"mbhave@pivotal.io",
"date":"2017-03-23T23:14:32Z"
,
"message":"Merge branch '1.5.x'",
]
这是我的主要内容。我只想从提交者字典中检索消息和名称、电子邮件、日期的键值。我被卡住了如何做到这一点。
NSMutableArray *CommitArray = [[NSMutableArray alloc] init];
for (NSDictionary *CommitDictionary in CommitJson)
CommitDict *commitDictObj = [[CommitDict alloc] init];
commitDictObj.message = [CommitDictionary objectForKey:@"message"];
for (NSDictionary *CommitterDictionary in [CommitDictionary objectForKey:@"committer"])
Committer *author = [[Committer alloc] init];
author.name = [CommitterDictionary objectForKey:@"name"];
author.email = [CommitterDictionary objectForKey:@"email"];
author.date = [CommitterDictionary objectForKey:@"date"];
[CommitArray addObject:commitDictObj];
for (int i =0 ; i < [CommitArray count] ; i++)
CommitDict *commitDictObj = [CommitArray objectAtIndex:i];
NSLog(@"Commit Message: %@", commitDictObj.message);
return 0;
我尝试获取 json 并显示消息、姓名、电子邮件和日期的值。我如何记录消息、姓名、电子邮件和日期的值?
【问题讨论】:
打印一次提交数组并打印一次 CommitJson 对不起先生..我不明白..你能解释更多细节 您需要澄清您的问题。请edit您的问题并提供更多详细信息。您发布的代码究竟以何种方式不起作用?它编译吗?它会崩溃吗?能走多远? 打印一次这个数据 id CommitJson 您的 JSON 样本包含不平衡的 [] 和 ;您的代码使用您显示的 JSON 中未出现的键“commits_url”;而且你不清楚你的代码哪里出错了。如果人们要在没有大量猜测的情况下帮助您,您需要清理您的问题并提供更多详细信息。 【参考方案1】:您的数组包含一个字典,该字典包含commit
字典,而不是直接包含commit
字典。替换那部分代码:
for (NSDictionary *CommitDictionary in CommitJson)
CommitDict *commitDictObj = [[CommitDict alloc] init];
这样:
for (NSDictionary *shaCommitDictionary in CommitJson)
CommitDict *commitDictObj = [[CommitDict alloc] init];
NSDictionary *CommitDictionary = [shaCommitDictionary objectForKey:@"commit"];
【讨论】:
【参考方案2】:(1) 将 JSON 转换为 NSDictionary
NSData *jsonData= ... // Assume you got the data already loaded
NSError *error = nil;
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
(2) 访问字典值(现在可以快速枚举!!
NSString *message = dictionary[@"message"];
NSDictionary *author = dictionary[@"author"];
NSString *name = author[@"author"];
NSString *email = author[@"author"];
NSString *date = author[@"author"];
// OR:
// NSString *name = dictionary[@"author"][@"author"];
// NSString *email = dictionary[@"author"][@"author"];
// NSString *date = dictionary[@"author"][@"author"];
就是这样。我认为棘手的事情是将 JSON 数据获取到 NSDictionary? 见这里:https://***.com/a/30561781/464016
【讨论】:
以上是关于如何检索json中键的特定值?的主要内容,如果未能解决你的问题,请参考以下文章