2010-07-18 8 views
5

J'ai un problème avec l'analyse JSON. Quand je frappe URL, je l'ai reçu une réponse JSON comme ceci:Comment détecter l'objet JSON/JSON Array sur XCode à l'aide de JSON-Framework

//JSON 1 
{ "data": 
    {"array": 
    ["3", 
     {"array": 
      [ 
      {"id":"1","message":"Hello","sender":"inot"}, 
      {"id":"2","message":"World","sender":"inot"}, 
      {"id":"3","message":"Hi","sender":"marza"} 
      ] 
     } 
    ] 
    }, 
"message":"MSG0001:Success", 
"status":"OK" 
} 

Mais si le résultat des données est à seulement 1, la réponse JSON est comme ceci:

//JSON 2 
{ "data": 
    {"array": 
    ["3", 
     {"array": 
      {"id":"3","message":"Hi","sender":"marza"} 
     } 
    ] 
    }, 
"message":"MSG0001:Success", 
"status":"OK" 
} 

je mets en œuvre ce code obtenir l'ID, le message et la valeur de l'expéditeur, et fonctionne correctement sur JSON 1, mais erreur sur JSON 2. J'utilise JSON-Framework. Et la question est de savoir comment détecter que la réponse JSON est un objet ({}) ou un tableau ([]) ??

// Parse the string into JSON 
NSDictionary *json = [myString JSONValue]; 

// Get all object 
NSArray *items = [json valueForKeyPath:@"data.array"]; 
NSArray *array1 = [[items objectAtIndex:1] objectForKey:@"array"]; 
NSEnumerator *enumerator = [array1 objectEnumerator]; 
NSDictionary* item; 
while (item = (NSDictionary*)[enumerator nextObject]) { 
    NSLog(@"id  = %@",[item objectForKey:@"id"]); 
    NSLog(@"message = %@",[item objectForKey:@"message"]); 
    NSLog(@"sender = %@",[item objectForKey:@"sender"]); 
} 

Répondre

15

Vous pouvez utiliser id et vérifier si l'objet que vous obtenez est NSArray ou NSDictionary comme ceci:

id item = [json valueForKeyPath:@"data.array"]; 
if ([item isKindOfClass:[NSArray class]]) { 
    // item is an array 
} 
else if ([item isKindOfClass:[NSDictionary class]]) { 
    // item is a dictionary 
} 
+0

Merci Michael Kessler, il travaille maintenant. – inot

+0

@inot, vous êtes plus que bienvenus pour marquer la réponse comme acceptée si elle a résolu votre problème. –