【发布时间】:2013-11-28 22:39:57
【问题描述】:
我有这个 JSON:
{
"_id" : "class_1",
"schedule" : [
{
"date" : "1-1-2014",
"subjects" : [
{
"time_range" : "08:00-10:00",
"subject" : "Sports"
},
{
"time_range" : "10:00-12:00",
"subject" : "History"
}
]
},
{
"date" : "2-1-2014",
"subjects" : [
{
"time_range" : "08:00-10:00",
"subject" : "Physics"
},
{
"time_range" : "10:00-12:00",
"subject" : "Chemistry"
},
{
"time_range" : "10:00-12:00",
"subject" : "Biology"
}
]
},
{
"date" : "3-1-2014",
"subjects" : [
{
"time_range" : "08:00-10:00",
"subject" : "English"
},
{
"time_range" : "10:00-12:00",
"subject" : "Maths"
}
]
},
{
"date" : "4-1-2014",
"subjects" : [
{
"time_range" : "08:00-10:00",
"subject" : "Spanish"
},
{
"time_range" : "10:00-12:00",
"subject" : "Choreography"
},
{
"time_range" : "12:00-14:00",
"subject" : "Music"
},
{
"time_range" : "14:00-16:00",
"subject" : "Sports"
},
{
"time_range" : "16:30-18:30",
"subject" : "Religion"
}
]
}
]
}
我想要做的是获得一个 NSArray/NSMutableArray 或 NSDictionary/NSMutableDictionary` 与给定日期的主题。因此,例如,如果我输入日期 4-1-2014,我想获取一个数组或字典,其中包含该日期中包含的 5 个主题。
我想要做的是获得一个 NSArray/NSMutableArray 或 NSDictionary/NSMutableDictionary 以及给定日期的主题。因此,例如,如果我输入日期 1-1-2014,我想获取一个数组或字典,其中包含该日期中包含的 2 个主题。
这是我尝试过的:
//NSDICTIONARY CONTAINING CLASS DATA FOR CLASS ID
NSDictionary *classData =
[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&error];
//NSMUTABLEDICTIONARY CONTAINING SCHEDULE DATA FOR CLASS ID
NSMutableArray *scheduleDatabyClassID = [classData objectForKey:@"schedule"];
//NSMUTABLEARRAY CONTAINING SCHEDULE SUBJECTS OF CLASS ID
NSMutableArray *subjectsDatabyDate =[[NSMutableArray alloc] init] ;
for (NSMutableDictionary *subjectsData in scheduleDatabyClassID ){
NSString *subjectsData_temp = [subjectsData objectForKey:@"subjects"];
NSString *schedule_date = [subjectsData objectForKey:@"date"];
NSString *check = @"25-11-2013";
if ([schedule_date isEqualToString:check]) {
[subjectsDatabyDate addObject:subjectsData_temp];
}
}
以下是我想要得到的,但没有手动将索引设置为 0。我想要 subjectDataByDate :例如值 (1-1-2014)。
NSLog(@"subjectsDatabyDate \n %@ ", [subjectsDatabyDate objectAtIndex:0]);
【问题讨论】:
-
将 JSON 解析成字典/数组,然后访问你想要的。
-
分享您的研究对每个人都有帮助。向我们展示您尝试了什么,为什么它不能满足您的需求以及任何错误消息。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见how to ask
-
提示:
[subjectsData objectForKey:@"subjects"];是NSArray,而不是NSString。 -
有助于理解 NSLog 转储。在用于记录数组和字典的
description格式中,()字符总是“括号”NS(Mutable)Arrays,{}字符总是“括号”NS(Mutable)Dictionarys。有时眼睛会忽略最外面的()字符,所以你必须训练自己仔细观察。 JSON 总是被“反序列化”成字典和数组的“巢”,如果您了解生成的结构,就很容易“导航”到您想去的地方。
标签: ios objective-c json nsarray nsdictionary