Parsing eine JSON-Antwort aus der Cloud

Wenn Sie einen Web-Service verwenden, die in der Cloud basiert, könnte Ihre Antwort in JSON sein. Wenn, wenn Sie mit Ihrer Cloud-basierten Web-Service arbeiten, können Sie die folgenden in Ihrem Web-Browser eingeben, waren

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

Sie würden einige JSON zurück - die folgenden, zum Beispiel

Ergebnis {Ergebnisse: [{... Geometrie {{Grenzen: {Nordost: {lat: 40.7489545,lng: -73,98483449999999}Südwesten: {lat: 40.7479245,lng: -73.9865073}},Lage: {lat: 40.7484395,lng: -73.9856709}, ...}

Da JSON ebenso kryptisch wie XML ist, müssten Sie dann analysieren, was auch immer es ist, dass JSON Ihnen gibt.

Parsing JSON jedoch ist ganz anders als das Parsen von XML. Arrays und Wörterbücher - JSON Sie sind ruhig vertraut auf zwei Strukturen aufgebaut. Die folgende JSON Beispiel verwendet beide:

NSError * error = nil-NSDictionary * responseDict = [NSJSONSerialization JSONObjectWithdata: Daten 
Optionen: NSJSONReadingMutableContainers Fehler: error] -

Wenn Sie die JSON-Analyse zu tun, haben Sie einige Optionen, die Sie auch festlegen können:

  • NSJSONReadingMutableContainers: Die Arrays und Wörterbücher, die Sie erhalten, sind wieder wandelbar, so dass Sie sie ändern können. Der Standardwert ist unveränderlich.

  • NSJSONReadingMutableLeaves: Die Saiten erhalten Sie sind wieder wandelbar, so dass Sie sie ändern können. Der Standardwert ist unveränderlich.

  • NSJSONReadingAllowFragments: Gibt an, dass der Parser Top-Level-Objekte ermöglichen sollten, nicht Arrays oder Wörterbücher sind. Die Standard erfordert die JSON-Top-Level-Objekte entweder eine Arrays oder Wörterbücher zu sein.

Wenn Sie die NSJSONSerialization Klasse, Sie (in der Regel aber nicht notwendigerweise) wieder entweder ein Array oder ein Wörterbuch, die Strings und Zahlen und auch andere Arrays und Wörterbücher (man denke Eigenschaftsliste Objekte hier) enthalten kann.

In diesem Fall könnten Sie an der Stelle bekommen lat und lng indem

NSDictionary * Ergebnis = [Ergebnisse objectAtIndex: 0] -NSDictionary * Geometrie = [Ergebnis objectForKey: @ "Geometrie"] - NSDictionary * location = [Geometrie objectForKey: @ "location"] - Breite = [Standort valueForKey: @ "lat"] -longitude = [Standort valueForKey: @ "lng"] -

Menü