我有一个JSON
数组(字典?)对象本身就是一个数组。我需要在其中一个数组中找到一个值,以便我以后可以比较它。我JSON
数据的一部分:
[
{
"Name": "Exhibitor",
"Url": "api/congress/exhibitor",
"ResourceType": "Data",
"LastMod": 1389106977
},
{
"Name": "Workshop",
"Url": "api/congress/workshop",
"ResourceType": "Data",
"LastMod": 1389106977
},
{
"Name": "Speaker",
"Url": "api/congress/Speaker",
"ResourceType": "Data",
"LastMod": 1389106977
},
]
我的方法接收表名作为参数并返回时间戳。例如,我如何获得表格“研讨会”的时间戳(1389106977)?这看起来很简单但我无法解决'嵌套'数组/词典。
谢谢,
编辑:
这是我添加了trojanfoe的代码。
NSError* localError;
NSMutableArray *syncDataArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (syncDataArray)
{
NSNumber *lastMod = nil;
for (NSDictionary *dict in syncDataArray)
{
NSLog(@"current table is: %@", dict[@"Name"]);
if ([tableName isEqualToString:dict[@"Name"]])
{
lastMod = dict[@"LastMod"];
//break;
}
}
NSLog(@"LastMod = %@", lastMod);
}
else
{
NSLog(@"syncDataArray is empty");
}
这很有效,也很有意义
答案 0 :(得分:2)
JSON数据看起来像一个字典数组,因此您可以迭代数组并测试“Name”条目:
NSArray *jsonData = ...; // You have converted JSON to Objective-C objects already
NSNumber *lastMod = nul;
for (NSDictionary *dict in jsonData) {
if ([@"Workshop" isEqualToString:dict[@"Name"]]) {
lastMod = dict[@"LastMod"];
break;
}
}
if (lastMod) {
// You found it
}
(注意我不确定用于存储“LastMod”对象的对象类型,因此您可能需要进行一些调试才能找到)。
编辑如果您大量使用这些数据,您应该立即将JSON数据转换为(自定义)模型对象数组,这样可以更轻松地操作数据,因为您的应用变得更多复杂。
答案 1 :(得分:0)
你有一个字典数组,所以它看起来像:
NSNumber *timestamp = [[JSON objectAtIndex:index] objectForKey:@"LastMod"];
答案 2 :(得分:0)
NSNumber *timestamp = response[1][@"LastMod"];