解析JSON并检查密钥是否存在

时间:2015-04-09 16:19:31

标签: ios json

我正在从服务器解析JSON,但我遇到的问题是,如果用户没有附加到帐户的信用卡,则会返回此信息:

enter image description here

但当他们确实附上信用卡时,它会返回:

enter image description here

我已尝试使用以下代码来确定card_first_name是否为零,但它崩溃了,因为显然card_first_name尚不存在。我该如何处理这种情况?请参阅下面的我当前的代码:

if (dict[@"message"][@"card_details"] !=[NSNull null]) {
    if (dict[@"message"][@"card_details"][@"card_first_name"]!=nil)       /*crashes here */ {
        NSLog(@"%@",dict[@"message"][@"card_details"][@"card_first_name"]);

    }
    if (dict[@"message"][@"card_details"][@"card_last_name"]!=[NSNull null]) {
        NSLog(@"%@",dict[@"message"][@"card_details"][@"card_last_name"]);

    }
    if (dict[@"message"][@"card_details"][@"card_number"]!=[NSNull null]) {
        NSLog(@"%@",dict[@"message"][@"card_details"][@"card_number"]);

    }

    if (dict[@"message"][@"card_details"][@"card_type"]!=[NSNull null]) {
        NSLog(@"%@",dict[@"message"][@"card_details"][@"card_type"]);

    }
    if (dict[@"message"][@"card_details"][@"expiry"]!=[NSNull null]) {
        NSLog(@"%@",dict[@"message"][@"card_details"][@"expiry"]);

    }
    if (dict[@"message"][@"card_details"][@"payment_ref"]!=[NSNull null]) {
        NSLog(@"%@",dict[@"message"][@"card_details"][@"payment_ref"]);


    }
}

提前致谢,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

确定是否存在卡详细信息的密钥计数。

NSUInteger keyCount = [dictionary count];

答案 1 :(得分:0)

首先验证密钥是否存在,然后检查是否有值:

       if(dict["message"]key key) 

从第一个可能的(预期)键开始,在您的情况下为“message”,然后为所有subseqwent(预期键,子键)。