Last Updated: February 25, 2016
·
242
· xfilipe

"Parseando" JSON no Android

JSONObjects

Para exemplificar vou utilizar o seguinte código:

{
   "title":"Example Schema",
   "type":"object",
   "properties":[
      {
         "data":{
            "name":"Mark",
            "age":20
         }
      },
      {
         "data":{
            "name":"Smith",
            "age":20
         }
      }
   ],
   "required":[
      "firstName",
      "lastName"
   ]
}

Suponha que este código JSON está em uma variável chamada jsonString. Primeiro devemos criar uma instancia do objeto JSONObject que irá mapear a string em uma estrutura de chaves e valores.

JSONObject js = new JSONObject(jsonString);

Agora, para obter por exemplo o titulo do tipo String basta chamar o método getString() da classe JSONObject:

String title = js.getString("title");

Se você quer obter todas as propriedades, utilize a classe JSONArray que guarda um conjunto ordenado de objetos do tipo JSONObject ou JSONArray:

JSONArray properties = js.getJSONArray("properties");

Para obter um item dentro do JSONArray você deve utilizar o método getJSONObject(). A iteração sobre pode ser feita da seguinte maneira:

String[] names = new String[properties.length()];
int[] ages = new int[properties.length()];
for (int i=0; i<properties.length(); i++){
    names[i] = properties.getJSONObject(i).getJSONObject("data").getString("name");

    ages[i] = properties.getJSONObject(i).getJSONObject("data").getInt("age");
}

Ps: Eu não testei efetivamente esse código mas, tenho 90% de certeza que funciona =P. Para mais detalhes consulte a documentação da biblioteca org.json no site oficial.