2012-11-06 50 views
-1

我在做Json解析,因爲我需要解析「TStatus」鍵來顯示錶格。JSON解析相同的鍵值爲不同的值

在該TStatus鍵中,值是3種類型。他們是100001,100002,100003.

我只想要100001值沒有別的......如何獲得這些值並將其存儲在數組中。

NSMutableArray *array = [arrayOfoccupiedTables valueForKey:@"TStatus"]; 

的響應是

{ 
     Msg = ""; 
     TStatus = 100003; 
     "Table_Id" = 446; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 447; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 448; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 449; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 450; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 451; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 452; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100003; 
     "Table_Id" = 453; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 454; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 455; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 456; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 457; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 458; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 459; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 460; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 461; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 462; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100003; 
     "Table_Id" = 463; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 464; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 465; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 466; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 467; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 468; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 469; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 470; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 471; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 472; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 473; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 474; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 477; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 478; 
    }, 
     { 
     Msg = ""; 
     TStatus = 100001; 
     "Table_Id" = 479; 
    } 
) 

PLZ幫我出這個傢伙的...在此先感謝

回答

2

你必須使用NSPredicate過濾陣列。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TStatus == 100001"];

NSArray *filtered = ["Your Array" filteredArrayUsingPredicate:predicate];

在過濾陣列

你獲得值,其中Tstatus = 100001;

+0

NSMutableArray * array = [arrayOfoccupiedTables valueForKey:@「TStatus」]; NSPredicate * predicate = [NSPredicate predicateWithFormat:@「TStatus == 100001」]; NSArray * filtered = [array filteredArrayUsingPredicate:predicate]; (@「佔用表是%@」,已過濾); 它在filteredArrayUsingPredicate時發生崩潰。錯誤是[<__ NSCFNumber 0x76f2370> valueForUndefinedKey:]:該類不是密鑰TStatus的密鑰值編碼。「 – Joker

+0

Gud man ...謝謝 – Joker

+0

@Joker你能告訴我你在NSArray中存儲了什麼樣的對象嗎? – priyanka

1

你有這一切數據和例如數組名​​是arrList就用波紋管代碼時,你想獲得全部數據,TStatus是100001然後用波紋管代碼過濾..

NSMutableArray *arrTStatus = [[NSMutableArray alloc]init]; 
for (int i =0; i<[arrList count]; i++) 
{ 
    if ([[[arrList objectAtIndex:i]valueForKey:@"TStatus"] isEqualToString:@"100001"]) 
    { 
      [arrTStatus addObject:[arrList objectAtIndex:i]]; 
    } 
} 
0

一個數組希望這將有助於

[allObject filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"TStatus = 100001"]]; 
+1

[arrayOfoccupiedTables filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@「TStatus = 100001」]]; (@「佔用表是%@」,arrayOfoccupiedTables); 它顯示日誌中的所有tstatus值。 – Joker

0

試試這個

for (NSDictionary *status in statuses) { 

NSString *Tstatus = [status objectForKey:@"TStatus"] 
if([Tstatus isEqualToString:@"100001"){ 
//Do your code here 
} 
} 

請參閱More about json

相關問題