我有一个 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
},
]
我的方法接收一个表名作为参数并返回一个时间戳。例如,我将如何收到表“workshop”的时间戳(1389106977)?这看起来很简单,但我无法解决“嵌套”数组/字典的问题。
谢谢,
编辑:
这是我的代码,其中添加了木马病毒。
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");
}
这完美且有意义
最佳答案
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 数据转换为(自定义)模型对象数组,这将使您的应用程序变得更容易操作数据复杂。
关于ios - Xcode - 从数组中的数组中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21046005/