2015-06-27 133 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