如何使用 NSDictionary 收集嵌套在数组中的 JSON 数据
Posted
技术标签:
【中文标题】如何使用 NSDictionary 收集嵌套在数组中的 JSON 数据【英文标题】:How do I gather JSON data nested in an array using NSDictionary 【发布时间】:2014-03-08 02:34:10 【问题描述】:我有以下 JSON:
0: 200,
error: false,
campaigns:
current_campaigns: [
id: "1150",
campaign_type_id: "1",
campaign_type: "Type",
title: "Name (with type) ",
url: "http://www.example.com",
special: null,
campaign_instructions: "Here's what you do",
pay_description: "",
start: "2013-10-14 00:00:00",
end: "2014-03-31 23:59:59"
,
id: "1151",
campaign_type_id: "1",
campaign_type: "Type",
title: "Name (with type) ",
url: "http://www.example.com",
special: null,
campaign_instructions: "Here's what you do",
pay_description: "",
start: "2013-10-14 00:00:00",
end: "2014-03-31 23:59:59"
,
],
new_campaigns: [
id: "1152",
campaign_type_id: "1",
campaign_type: "Type",
title: "Name (with type) ",
url: "http://www.example.com",
special: null,
campaign_instructions: "Here's what you do",
pay_description: "",
start: "2013-10-14 00:00:00",
end: "2014-03-31 23:59:59"
]
还有下面的代码
NSURL *theJSON = [NSURL URLWithString:@"http://somejsonurl"];
NSURLRequest *request = [NSURLRequest requestWithURL:theJSON];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
NSError *errorJson = nil;
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&errorJson];
NSArray *campaigns = dataDictionary[@"campaigns"];
for (NSDictionary *campaignList in campaigns)
NSLog(@"Call gave: %@", campaigns);
我将如何最终记录 current_campaign 标题? 我试过了
NSLog(@"%@", [campaignList objectForKey:@"title"]);
NSLog(@"%@", campaigns[@"title"] );
并没有成功。我是 Objective C 的新手,无法理解如何使用 NSArray 和 NSDictionary 深入研究 JSON。任何帮助将不胜感激!
【问题讨论】:
访问 json.org 并学习 JSON 语法。只需 5-10 分钟。 “去学习 X”可能是帮助某人解决问题的最没有帮助的方式。 你试过了吗???真的确实只需要 5-10 分钟来学习,当你学会它时,JSON 变得少得多令人困惑。当你理解它时,它真的非常简单。 我同意 Hot Licks。我关于识别 [] 和 的提示将帮助您理解构成 JSON 对象的两种结构的分解,但这仅仅是开始。我还建议更多地了解它。我认为 Hot Licks 只是想提供帮助。 我认为你的方法与 ElJay 不同。有帮助 vs bit.ly/1nGQMVA 【参考方案1】:关于JSON
,最容易记住的一点是,每次看到括号“[”时,这意味着Array
的开头,而“]”是结尾。每次看到花括号“”表示Dictionary
的开头,“”是结尾。
因此,在您的示例中,campaigns
是一个 Dictionary
元素,另一个 Dictionary
(current_campaigns
) 包含 Array
的 Dictionaries
。每个Dictionaries
都有一个key
,称为title
。
所以长版本(未经测试):
NSDictionary *campaigns = [dataDictionary objectForKey:@"campaigns"];
NSArray *currentCampaigns = [campaigns objectForKey:@"current_campaigns"];
for (NSDictionary *thisCampaign in currentCampaigns)
NSLog(@"title: %@", [thisCampaign objectForKey:@"title"]);
【讨论】:
这项工作不仅像魔术一样有效(语法在 objectForKey 之后缺少 ':',但 nbd )...您对 [] 和 的提示正是我需要做的提示.谢谢! @Aubrey -- 这很奇怪,因为这是我给你的确切建议 -- 去 json.org 并学习语法。当您在上面得到的“提示”完全相同时,为什么“没有帮助”?? 您给出的建议是“去某个地方学习”而不是像 ElJay 上面所做的那样提供解决方案。当你这样的巨魔时,你是如何拥有这种程度的信誉的。以上是关于如何使用 NSDictionary 收集嵌套在数组中的 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
以 NSDictionary 作为对象的嵌套数组上的 NSPredicate
JSONModel 嵌套字典数组 JSONModel nest NSDictionary NSArray
如何使用 Swift 将新数组数据添加到 plist 文件中的 NSDictionary