Analisar uma resposta JSON a partir da nuvem

Quando você usa um serviço web que é baseado na nuvem, a sua resposta pode estar em JSON. Se, ao trabalhar com o seu serviço web baseado em nuvem, você tivesse que digitar o seguinte no seu navegador

https://maps.googleapis.com/maps/api/geocode/json?sensor=trueaddress=Empire 
Edifício estatal

você deseja obter de volta alguns JSON - o seguinte, por exemplo,

resultado {resultados: [{... geometria {{limites: {nordeste: {lat: 40.7489545,GNL: -73,98483449999999},sudoeste: {lat: 40.7479245,GNL: -73.9865073}},localização: {lat: 40.7484395,GNL: -73.9856709}, ...}

Desde JSON é tão enigmático como XML, você teria, então, para analisar o que é que lhe dá JSON.

Analisar JSON, no entanto, é bastante diferente da análise de XML. JSON é construído sobre duas estruturas são tranquilos familiarizado com - matrizes e dicionários. O seguinte exemplo de JSON usa tanto:

NSError * Erro = nil-NSDictionary * responseDict = [NSJSONSerialization JSONObjectWithdata: dados 
Opções: NSJSONReadingMutableContainers erro: Erro] -

Quando você faz a análise JSON, você tem algumas opções que podem ser configuradas, bem como:

  • NSJSONReadingMutableContainers: Os arrays e dicionários você voltar são mutáveis ​​para que você possa modificá-los. O padrão é imutável.

  • NSJSONReadingMutableLeaves: As cordas você voltar são mutáveis ​​para que você possa modificá-los. O padrão é imutável.

  • NSJSONReadingAllowFragments: Especifica que o analisador deve permitir que objetos de nível superior que não são matrizes ou dicionários. O padrão requer que os objetos de nível superior JSON para ser um matrizes ou dicionários.

Quando você usa o NSJSONSerialization classe, você (geralmente mas não necessariamente) voltar um array ou dicionário que pode incluir cordas e números e até mesmo outros arrays e dicionários (acho lista de propriedades objetos aqui).

Neste caso, você pode obter no local lat e lng fazendo

NSDictionary * resultado = [resultados objectAtIndex: 0] -NSDictionary * geometria = [resultado objectForKey: @ "geometria"] - NSDictionary * location = [geometria objectForKey: @ "location"] - latitude = [localização valueForKey: @ "lat"] -longitude = [localização valueForKey: @ "LNG"] -

menu