ios json sbjson

El valor de NSDictionary de iOS determina si Boolean de JSON boolean



sbjson (2)

Un enfoque alternativo a esto, que no requiere conversión a NSNumber, es algo como a continuación:

if ([response objectForKey:@"success"]) { if ([[response objectForKey:@"success"] boolValue]) NSLog(@"value is true"); }

Tengo una respuesta JSON de un servidor web que se parece a esto:

{"success":true, "token":"123456"}

y quiero usar eso en una sentencia if, y compararlo con "YES".

Sin embargo, hacer esto no funciona:

NSDictionary *response = [response JSONValue]; // the JSON value from webservice response, converted to NSDictionary if ([response objectForKey:@"success"]){} // does not work if ([response objectForKey:@"success"] == YES){} // does not work if ([[response objectForKey:@"success"] integerValue] == YES) {} // does not work...erroneous probably

¿Cómo puedo solucionar esto? Typecasting en Boolean produce una advertencia también


ya que [response objectForKey:@"success"] no funciona, ¿qué sucede cuando prueba [response valueForKey: @"success"] ?

Sospecho que devuelve un NSNumber y luego puedes hacer algo como:

NSNumber * isSuccessNumber = (NSNumber *)[response objectForKey: @"success"]; if([isSuccessNumber boolValue] == YES) { // this is the YES case } else { // we end up here in the NO case **OR** if isSuccessNumber is nil }

Además, ¿qué hace NSLog( @"response dictionary is %@", response ); Pareces en tu consola? Veo que la biblioteca JSON que está utilizando devuelve los tipos objectForKey para objectForKey , por lo que sospecho que es posible que no tenga un NSDictionary válido.