2015-06-27 136 views
-1

通过使用IF可以检索某些部分的JSON,而不是全部在Objective-C中。像我想找回只是那些数据时性别等于如何检索部分JSON文件?

[ 
    { 
    "name":"A", 
    "gender":"Male", 
    "age":20 
    }, 
    { 
    "name":"B", 
    "gender":"Female", 
    "age":12 
    }, 
{ 
    "name":"C", 
    "gender":"Male", 
    "age":20 
    } 
] 

任何想法,将不胜感激。

回答

1

替代解决方案与NSPredicate

NSString *jsonString = @"[{\"name\":\"A\",\"gender\":\"Male\",\"age\":20},{\"name\":\"B\",\"gender\":\"Female\",\"age\":12},{\"name\":\"C\",\"gender\":\"Male\",\"age\":20}]"; 

    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error: nil]; 
    NSArray *maleRecords = [jsonArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"gender == 'Male'"]]; 
    NSLog(@"%@", maleRecords); 
+0

谢谢@它是有效的,但是男性记录的结果就像这样('年龄= 20; g恩德=男; name = A; },{age = 20;性别=男性; name = C; })'这不是JSON格式,第一个对象移动到最后一个和儿子。 **我怎样才能这两个问题** :-) - 当我想将它填充到UITableView **时出现此错误 - [__ NSCFDictionary name]:无法识别的选择器发送到实例0x17407fd40 ** –

+0

您无法填充表纯json格式,因为它只是一个字符串。你需要一个字典数组。字典是一个包含无序键值对的对象。为了得到一个值写入'object [@“name”]'而不是'object.name' – vadian

+0

@areeali这是字典对象的**描述**。这只是一个普通的'NSDictionary',它具有字符串键。它是** NOT TEXT,**,因为它已被解析。你可以使用下标符号来访问它的内容(例如'record [@“Name”]'或[record objectForKey:@“Name”]'),但**请请**请不要提出这样的普通答复问题。相反,请阅读正在使用的类的文档**,并在分析JSON时考虑会发生什么**。 –

2

使用在循环

for (NSDictionary *dict in JSONArray) { 
     if ([dict[@"gender"] isEqualToString:@"Male"]) { 
      NSLog(@"Gender Data: Name = %@ Age = %@", dict[@"name"], dict[@"age"]); 
     } 
    } 
+0

+1,想我应该指出的是,你可以使用字典的'现代语法[@“性别]'以及[[字典valueForKey:@“gender”]] – rebello95

+0

true,我已经在NSLog中使用过它们,我正在编辑它为if条件以及 – suhit

+0

啊,没有看到最初的哈哈 – rebello95