2012-07-15 1 views
0

Je ne parviens pas à vérifier si l'une de mes clés est vide.Vérification d'une clé vide dans une réponse JSON complexe

Suite est la analysable réponse JSON Je travaille avec:

Cas 1 (« tags » clé n'est pas vide)

{ 
height = 480; 
pid = "[email protected]"; 
tags =  (
      { 
     attributes =    { 
      mood =     { 
       confidence = 42; 
       value = happy; 
      }; 
      smiling =     { 
       confidence = 52; 
       value = false; 
      }; 
     }; 
     center =    { 
      x = "49.86"; 
      y = "60.52"; 
     }; 
     confirmed = 0; 
     width = "50.28"; 
    } 
); 
url = "http://abc/efg/hijk/lmnop.jpg"; 
width = 360; 
} 

Il y a des moments où la réponse se présente comme suit:

Case 2 ('tags' clés est vide)

{ 
height = 480; 
pid = "[email protected]"; 
tags =  (
); 
url = "http://abc/efg/hijk/lmnop.jpg"; 
width = 360; 
} 

Quand je vérifie si des « balises » est vide dans le cas 2, il retourne faux:

if ([photo objectForKey:@"tags"] == nil) 

Vérification de la valeur réelle de [photo objectForKey:@"tags"] dans les déclarations de journaux:

(
) 

Comment puis-je vérifier si 'tags' est vide?

+0

D'où obtenez-vous ce JSON et que faites-vous pour l'analyser? Est ce que vous avez posté la chaîne JSON réelle? Parce que si c'est le cas, ce n'est pas JSON valide, et sinon, je ne sais pas ce que c'est. –

Répondre

7

Essayez:

if ([[photo objectForKey:@"tags"] count] == 0) 
+1

A travaillé comme un charme. Merci ! – Myxtic

+0

Magnifique. J'aurais aimé avoir trouvé ça plus tôt! C'est ce qui a fonctionné pour moi: si ([[myDictionary valueForKey: @ "my_value"] compte] == 0) { NSLog (@ "Je suis vide!"); ObjectForKey ne semble pas fonctionner sur les objets vides mais valueForKey renvoie tout ce qui est dans le champ, même s'il est vide. –

0

Comment vous analysez exactement et stocker le texte JSON? Il semble que vous le stockez dans NSArray/NSDictionary (peut-être)? Un peu de clarification sur la façon dont il est analysé et quelle structure de données le stocke aiderait.

En supposant que vous le stockez dans un NSArray/NSDictionary, qu'est-ce qui ne va pas/ne fonctionne pas avec la façon dont vous vérifiez actuellement si "tags" est vide?

Si

if ([photo objectForKey:@"tags"] == nil) 

est soit faux dans le cas où l'un et vrai dans le cas de deux, cela signifie qu'il n'y a pas de valeur dans la structure de données pour les « balises » clés en cas de deux, ce qui signifie que les « balises "Le champ est vide.

Cela semble être le meilleur et le plus pratique pour vérifier.