在NSArray中筛选和存储JSON值
我从服务器上获取了大量JSON值,我想解析JSON数据,并使用单个键的相应值对其进行过滤。 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键“
[{"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”等开头的名字。