How do I get the string of a parent JSon or JSon in array format?

4

I have the following JSON :

String json = "{\n" +
            "\n" +
            "    \"Pessoas\":[\n" +
            "        {\n" +
            "            \"NomeHomem\":{\n" +
            "                \"Idade\":1\n" +
            "            }\n" +
            "        },\n" +
            "        {\n" +
            "            \"NomeMulher\":{\n" +
            "                \"Idade\":true\n" +
            "            }\n" +
            "        },\n" +
            "        {\n" +
            "            \"NomeCrianca\":{\n" +
            "                \"Idade\":\"string\"\n" +
            "            }\n" +
            "        }\n" +
            "    ]\n" +
            "\n" +
            "}";

When there is no array like in this case I use a getString("Pessoas"); and it works. But in this case, how to do it?

    
asked by anonymous 18.06.2015 / 16:13

1 answer

0

Considering your JSON, below:

{
   "Pessoas":[
      {
         "NomeHomem":{
            "Idade":1
         }
      },
      {
         "NomeMulher":{
            "Idade":true
         }
      },
      {
         "NomeCrianca":{
            "Idade":"string"
         }
      }
   ]
}

As you well observed now we have an array of people. In this case we should recover as a JSONArray and retrieve each element, which will be a Pessoa and then retrieve its values, something like this:

final JSONObject json = new JSONObject(json);
final JSONArray pessoas = json.getJSONArray("Pessoas");
final int pSize = pessoas.length();
for (int i = 0; i < pSize; i++) {
    final JSONObject pessoa = pessoas.getJSONObject(i);
    System.out.println(pessoa);
}

In this case the result will be this:

{"NomeHomem":{"Idade":1}}
{"NomeMulher":{"Idade":true}}
{"NomeCrianca":{"Idade":"string"}}

EDITION

If you also want the string representing People you can call toString of JSONArray , like this:

pessoas.toString();

Or so, that will format the output:

pessoas.toString(2);

The first form will generate this result:

[{"NomeHomem":{"Idade":1}},{"NomeMulher":{"Idade":true}},{"NomeCrianca":{"Idade":"string"}}]

And the second this:

[
  {"NomeHomem": {"Idade": 1}},
  {"NomeMulher": {"Idade": true}},
  {"NomeCrianca": {"Idade": "string"}}
]
    
18.06.2015 / 16:38