在Objective-C中解析JSON数组

时间:2015-07-09 18:03:49

标签: ios objective-c json parsing

我设法从一些json中提取以下数组(我将其转储到控制台)。如何获取并打印其中一个元素的值,即任务?

目标-C:

NSArray *array = [dict objectForKey:@"row"];
        NSLog(@"array is: %@",array);

控制台输出:

array is: {
    0 = 1;
    1 = "send email";
    2 = "with attachment";
    ltask = "with attachment";
    task = "send email";
    userid = 1;
}

4 个答案:

答案 0 :(得分:3)

array看起来实际上是NSDictionary,因此请引用该键以获取其值。

NSLog(@"Task: %@", array[@"task"]);

答案 1 :(得分:0)

变量数组似乎不是NSArray。这对你有用吗?

    id  array = [dict objectForKey:@"row"];

    if([array isKindOfClass:[NSDictionary class]]){
        NSLog(@"Value of task %@",array[@"task"]);
    }

答案 2 :(得分:0)

从日志中看,输出看起来像是一个NSDictionary对象,所以要获取任务键的值,只需执行此操作

NSDictionary *myDict = dict[@"row"];
NSString *task = myDict[@"task"];
NSLog(@"task = %@", task);

如果您想确认只需使用isKindOfClass:方法检查班级类型

if([dict[@"row"] isKindOfClass:[NSDictionary class]]) {

    NSDictionary *myDict = dict[@"row"];
    NSString *task = myDict[@"task"];
    NSLog(@"task = %@", task);

} else if([dict[@"row"] isKindOfClass:[NSArray class]]) {

    NSArray *myArray = dict[@"row"];
    NSDictionary *myDict = myArray[0];
    NSString *task = myDict[@"task"];  
    NSLog(@"task = %@", task);

}

答案 3 :(得分:0)

        if ([[dictionary allKeys] containsObject:@"row"]) {
            NSObject *objRow = dictionary[@"row"];
            if(objRow){
                if([objRow isKindOfClass:[NSArray class]]){
                     NSArray *arr = (NSArray *)objRow;
                     ....
                }
                if([objRow isKindOfClass:[NSDictionary class]]){
                     NSDictionary *dic = (NSDictionary *)objRow;
                     ....
                }
            }
        }