在NSArray中筛选和存储JSON值

在NSArray中筛选和存储JSON值,json,Json,我从服务器上获取了大量JSON值,我想解析JSON数据,并使用单个键的相应值对其进行过滤。 JSON值有点像 [{"id":8,"name":"General","visible":1,"summary":"","summaryformat":1,"modules":""},{"id":9,"name":"section01","visible":0,"summary":"","summaryformat":1,"modules":""}] 在上面的like-JSON值中,我想用相应的to键“

我从服务器上获取了大量JSON值,我想解析JSON数据,并使用单个键的相应值对其进行过滤。 JSON值有点像

[{"id":8,"name":"General","visible":1,"summary":"","summaryformat":1,"modules":""},{"id":9,"name":"section01","visible":0,"summary":"","summaryformat":1,"modules":""}]
在上面的like-JSON值中,我想用相应的to键“visible”拆分这些值

如果visible=0,我想存储它们,如果visible=1,我不应该将值存储在数组中

我需要一些帮助

NSMutableArray *jsonArray = [[NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e] mutableCopy];

jsonArray = [jsonArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    return [evaluatedObject[@"visible"] intValue] == 1;
}];
我是盲目打字的,所以我不知道这在语法上是否正确

关键是,首先必须通过
NSJSONSerialization
类实例化
NSArray
。 然后,您可以使用
NSPredicate
对其进行过滤,它只检查
NSArray
中包含的
NSDictionary
visible
属性


您可能也可以使用普通的
NSPredicate
而不是块来执行此操作,但我发现块更简单:)

它将错误显示为不兼容的块指针类型,将“int(^)(\uu强id,NSDictionary*\uu强)”发送到类型为“BOOL(^)(\uu强id,NSDictionary*\uu强)”的参数。您是对的,块必须返回BOOL。只需将其添加到代码中,它就会工作。如果它是字符串值,我们如何过滤它?(即)对于“名称”键,你是什么意思?如果您想按名称筛选,例如,您只希望名称为“General”,则可以返回[evaluatedObject[@“name”]isEqualToString:@“General”];或者您可以返回[evaluatedObject[@“name”]hasPrefix:@“G”];如果你只想要以“G”等开头的名字。