L'analyse d'une réponse JSON à partir du nuage

Lorsque vous utilisez un service Web qui est basé dans le nuage, votre réponse pourrait être en JSON. Si, lorsque vous travaillez avec votre service Web basé sur le cloud, vous deviez entrer la commande suivante dans votre navigateur Web

http://maps.googleapis.com/maps/api/geocode/json?sensor=trueaddress=Empire 
State Building

vous souhaitez récupérer une partie JSON - ce qui suit, par exemple,

{résultat résultats: [{{{... géométrielimites: {Nord est: {Lat: 40.7489545,GNL: -73,98483449999999},Sud Ouest: {Lat: 40.7479245,GNL: -73.9865073}},emplacement: {Lat: 40.7484395,GNL: -73.9856709}, ...}

Depuis JSON est tout aussi énigmatique que XML, vous auriez alors à analyser quoi que ce soit qui vous donne JSON.




L'analyse JSON, cependant, est très différente de l'analyse XML. JSON est construit sur deux structures que vous êtes familier avec calme - les tableaux et les dictionnaires. L'exemple suivant utilise JSON la fois:

NSError * error = nil-NSDictionary * responseDict = [NSJSONSerialization JSONObjectWithdata: données 
Erreur de NSJSONReadingMutableContainers:: options erreur] -

Quand vous faites l'analyse JSON, vous avez quelques options que vous pouvez définir ainsi:

  • NSJSONReadingMutableContainers: Les tableaux et les dictionnaires vous obtenez en retour sont modifiables de sorte que vous pouvez les modifier. La valeur par défaut est immuable.

  • NSJSONReadingMutableLeaves: Les chaînes que vous récupérez sont modifiables de sorte que vous pouvez les modifier. La valeur par défaut est immuable.

  • NSJSONReadingAllowFragments: Indique que l'analyseur devrait permettre objets de haut niveau qui ne sont pas des tableaux ou des dictionnaires. La valeur par défaut nécessite les objets de haut niveau JSON à être soit un des tableaux ou des dictionnaires.

Lorsque vous utilisez le NSJSONSerialization classe, vous (habituellement, mais pas nécessairement) de revenir soit un tableau ou un dictionnaire qui peut inclure des chaînes et des numéros et même d'autres tableaux et dictionnaires (pensez à la liste des biens objets ici).

Dans ce cas, vous pourriez obtenir à l'emplacement lat et GNL en faisant

NSDictionary * Résultat = [résultats objectAtIndex: 0] * -NSDictionary géométrie = [résultat objectForKey: @ "géométrie"] - NSDictionary * location = [géométrie objectForKey: @ "localisation"] - latitude = [emplacement valueForKey: @ "lat"] -Longitude = [emplacement valueForKey: @ "GNL"] -