JSON为不同的值解析相同的密钥

时间:2012-11-06 08:54:50

标签: iphone objective-c xcode json

我正在进行Json解析,因为我需要解析“TStatus”键来显示表格。

在该TStatus键中,值为3types。它们是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帮助我解决这些问题......提前致谢

4 个答案:

答案 0 :(得分:2)

您必须使用 NSPredicate

过滤数组

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

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

在过滤后的数组中,您可以获得 Tstatus = 100001;

的值

答案 1 :(得分: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]];   
     }
 }

答案 2 :(得分:0)

希望这会有所帮助

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

答案 3 :(得分:0)

试试这个

for (NSDictionary *status in statuses) {

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

请参阅此More about json