2013-09-05 44 views
0

我从服务器获取了一些JSON值,我想解析JSON数据并用相应的值对单个KEY进行过滤。 的JSON值稍微看起来像在NSArray中过滤和存储JSON值

[{"id":8,"name":"General","visible":1,"summary":"","summaryformat":1,"modules":""},{"id":9,"name":"section01","visible":0,"summary":"","summaryformat":1,"modules":""}] 
在上述像JSON值

我想与各自的值被划分到键“可见”

如果可见= 0,我想存储它们,并且如果可见= 1,我不应该存储数组中的值。

需要一些帮助。

回答

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; 
}]; 

我盲目地打字,所以我不知道这是否是语法正确

的一点是,你首先得实例化NSArray通过NSJSONSerialization类。 然后,您可以用NSPredicate,只是检查包含在NSArray

NSDictionaryvisible属性过滤它你也许可以做到这一点也与正常NSPredicate,而不是块,但我觉得块简单:)

+0

它显示错误为'INT(^)(__ strong id,NSDictionary * __ strong)'的类型为'BOOL(^)(__ strong id,NSDictionary * __ strong)'的参数不兼容的块指针类型' –

+0

您是对的,该块必须返回一个BOOL。只需将其添加到代码中,它应该可以工作 – Vik

+0

我编辑了我的答案 – Vik