Я получаю строку JSON, которую мне нужно перебирать, чтобы получить некоторые значения объектов. Это структураКак определить, является ли словарь пустым или нулевым
-meta -objects |_cabdriver |_employee |client
Есть объекты под деревом объектов, и есть также дочерние узлы, как извозчик и клиент. В кабриоле дочернего узла также есть еще один дочерний узел, называемый employee.
Это так, как я итерация его:
NSArray *messageArray = [json objectForKey:@"objects"];
historialServicios = [[NSMutableArray alloc]init];
// Parse and loop through the JSON
for (dictionary in messageArray) {
//datos de nivel objects
NSString * date = [dictionary objectForKey:@"date"];
NSString * origin = [dictionary objectForKey:@"origin"];
NSString * destiny = [dictionary objectForKey:@"destiny"];
NSString * rate = [dictionary objectForKey:@"service_rate"];
NSString * state = [dictionary objectForKey:@"state"];
NSString * time_service = [dictionary objectForKey:@"time_service"];
NSString * id_service = [dictionary objectForKey:@"id"];
//datos de nivel cliente
NSDictionary *level2Dict = [dictionary objectForKey:@"client"];
NSString *client_id = [level2Dict objectForKey:@"id"];
//datos de nivel cabdriver
NSDictionary *cabdriverLevelDict=[dictionary objectForKey:@"cabdriver"];
//datos de nivel employee
NSDictionary *employeeLevelDict = [cabdriverLevelDict objectForKey:@"employee"];
//datos del employee
NSString *driverName = [employeeLevelDict objectForKey:@"name"];
NSString *driverLastname = [employeeLevelDict objectForKey:@"lastname"];
NSString *driverPhone = [employeeLevelDict objectForKey:@"phone"];
NSString *driverId = [employeeLevelDict objectForKey:@"id"];
[historialServicios addObject:@{
@"time_service": time_service,
@"id_service": id_service,
@"rate": rate,
@"destiny": destiny,
@"state": state,
@"origin": origin,
@"client_id":client_id,
@"date": date,
@"driverName":driverName,
@"driverLastname": driverLastname,
@"driverPhone": driverPhone,
@"driverId": driverId
}];
NSLog(@"DESPUES DE ANADIR OBJETOS");
NSLog(@"OBJETO ANADIDO==>TIME SERVICE = %@, ID SERVICE=%@, SERVICE RATE=%@,SERVICE DATE=%@,DESTINY=%@, STATE =%@,CLIENT ID=%@, ORIGIN=%@,DRIVER NAME=%@, DRIVER LASTNAME=%@,DRIVER PHONE=%@, DRIVER ID=%@",time_service,id_service,rate,date,destiny,state,client_id,origin,driverName,driverLastname,driverPhone,driverId);
//insertamos objetos en diccionario historialServicios
}
Все отлично работает, если объект имеет все узлы, но несколько раз, то извозчик узел пуст и не имеет сотрудник дочернего узла. Если это так, я получаю исключение, и приложение падает.
Как определить, существует ли сотрудник узла, и избежать исключения?
спасибо.
Вы упомянули, что получаете исключение, но вы его не описали. На какой строке возникает исключение? Какова трассировка стека исключений? –