Video: Introduction to Amazon Web Services by Leo Zhadanovsky 2024
Del av iOS Cloud Development For Dummies Cheat Sheet
När du använder en webbtjänst som är baserad i molnet kan ditt svar vara i JSON. Om du, när du arbetar med din molnbaserade webbtjänst, skulle ange följande i din webbläsare
// kartor. googleapis. com / kartor / api / Geocode / json? sensor = true & address = EmpireState Building &
du skulle få tillbaka några JSON - följande, till exempel
resultat {resultat: [{… geometri {{ gränser: { nordost: { lat: 40. 7489545, lng: -73. 98483449999999}, sydväst: { lat: 40. 7479245, lng: -73. 9865073}}, Plats: { Lat: 40. 7484395, lng: -73. 9856709}, …}
Eftersom JSON är lika kryptisk som XML, måste du då analysera vad det är som JSON ger dig.
Parsing JSON är dock ganska annorlunda än att analysera XML. JSON bygger på två strukturer du är tyst bekant med - arrays och ordböcker. Följande JSON-exempel använder både:
NSError * error = nil; NSDictionary * responseDict = [NSJSONSerialization JSONObjectWithData: dataalternativ: NSJSONReadingMutableContainers error: & error];
När du analyserar JSON har du några alternativ du kan ställa in:
-
NSJSONReadingMutableContainers: De arrays och ordböcker du får tillbaka är mutable så att du kan ändra dem. Standardvärdet är oföränderligt.
-
NSJSONReadingMutableLeaves: Strängarna du kommer tillbaka är mutable så att du kan ändra dem. Standardvärdet är oföränderligt.
-
NSJSONReadingAllowFragments: Anger att parsern ska tillåta objekt på hög nivå som inte är arrays eller ordböcker. Standard kräver att JSON-toppnivån är antingen en array eller ordböcker.
När du använder NSJSONSerialization-klassen får du (vanligtvis men inte nödvändigtvis) tillbaka en uppsättning eller en ordbok som kan innehålla strängar och siffror och även andra uppsättningar och ordböcker (tänk egenskapslistaobjekt här).
I det här fallet kan du komma till läget lat och lng genom att göra
NSDictionary * result = [results objectAtIndex: 0]; NSDictionary * geometry = [result objectForKey: @ "geometry"]; NSDictionary * location = [geometry objectForKey: @ "location"]; latitud = [platsvärdeForKey: @ "lat"]; longitude = [location valueForKey: @ "lng"];