2011-05-23 3 views
0

j'ai cette chaîne JSONComment analyser JSON en Objective-C

{ 
    "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/", 
    "city": [ 
     { 
      "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/", 
      "agencyCollection": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/agencyCollection/" 
      }, 
      "codecit": "ABJ", 
      "country": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/country/" 
      }, 
      "namecit": "ABIDJAN" 
     }, 
     { 
      "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/", 
      "agencyCollection": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/", 
       "agency": [ 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/3/" 
        }, 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/4/" 
        } 
       ] 
      }, 
      "codecit": "ALG", 
      "country": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/country/" 
      }, 
      "namecit": "ALGER" 
     }, 
     { 
      "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/", 
      "agencyCollection": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/", 
       "agency": [ 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/5/" 
        }, 
        { 
         "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/6/" 
        } 
       ] 
      }, 
      "codecit": "AMS", 
      "country": { 
       "@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/country/" 
      }, 
      "namecit": "AMSTERDAM" 
     } 
    ] 
} 

Je veux l'analyser, j'ai écrit ce code

NSString *myJSON = [[NSString alloc] initWithContentsOfFile:responseString encoding:NSUTF8StringEncoding error:NULL]; 
NSDictionary *json = [myJSON JSONValue]; 
//NSLog(responseString); 
NSArray *citysList = [json objectForKey:@"city"]; 
NSLog(@"ok"); 
NSLog(@" number of element : %@", [citysList count]); 

Mais j'ai 0 nombre d'éléments, aider s'il vous plaît

Répondre

1

Michael a raison. Voici une réponse plus détaillée:

initWithContentsOfFile prend une chaîne contenant un chemin de fichier (par exemple "https://stackoverflow.com/users/mehdi/documents/myFile.txt"). Vous semblez transmettre votre chaîne JSON réelle, qui n'est pas un chemin de fichier. Par conséquent, initWithContentsOfFile renvoie probablement nil.

Vérifiez en demandant:

if (myJSON == nil) NSLog(@"myJSON variable == nil!"); 

Si elle est nulle, alors votre code installe également json et citysList à zéro.

Essayez ceci:

NSDictionary *json = [responseString JSONValue]; 
NSArray *citysList = [json objectForKey:@"city"]; 
NSLog(@" number of element : %d", [citysList count]); 
1

Vous effectuez un initWithContentsOfFile mais en transmettant une chaîne. Avez-vous essayé simplement [responseString JSONValue]? Votre code suggère que responseString a le chemin d'accès au fichier que vous essayez d'ouvrir, pas votre chaîne de réponse complète elle-même.

+0

ah oui, il est vrai, je vous remercie – user567