Get name of the properties of a Json

0

How do I get the properties names of a Json using the Gson library?

Example input:

{
   "Ficha":[
      {
         "nome":"nome",
         "sobrenome":"sobrenome",
         "idade":"idade",
         "endereco":"endereco",
         "empresa":"empresa",
         "telefones":[
            {
               "residencial":"residencial"
            },
            {
               "celular":"celular"
            }
         ]
      }
   ]
}

Expected Exit:

["nome", "sobrenome", "idade", "endereco", "empresa", "telefones", ...
    
asked by anonymous 01.02.2016 / 17:39

2 answers

0

Using Gson , you can use the entrySet method to get all properties of a JsonObject , as shown in the example below.

String json =
    "{" +
        "\"Ficha\":[" +
            "{" +
                "\"nome\":\"nome\"," +
                "\"sobrenome\":\"sobrenome\"," +
                "\"idade\":\"idade\"," +
                "\"endereco\":\"endereco\"," +
                "\"empresa\":\"empresa\"," +
                "\"telefones\":[" +
                    "{" +
                        "\"residencial\":\"residencial\"" +
                    "}," +
                    "{" +
                        "\"celular\":\"celular\"" +
                    "}" +
                "]" +
            "}" +
        "]" +
    "}";
JsonObject json = new JsonParser().parse(jsonString).getAsJsonObject();
JsonObject primeiraFicha = json.get("Ficha").getAsJsonArray().get(0).getAsJsonObject();
Set<Entry<String, JsonElement>> properties = primeiraFicha.entrySet();
StringBuilder sb = new StringBuilder();
sb.append("[");
boolean first = true;
for (Entry<String, JsonElement> property : properties) {
    if (!first) sb.append(",");
    first = false;
    sb.append(property.getKey());
}
sb.append("]");
System.out.println(sb.toString());
    
01.02.2016 / 18:17
1

Here's one way to do what you're looking for:

var json = {
  "Ficha": [{
    "nome": "nome",
    "sobrenome": "sobrenome",
    "idade": "idade",
    "endereco": "endereco",
    "empresa": "empresa",
    "telefones": [{
      "residencial": "residencial"
    }, {
      "celular": "celular"
    }]
  }]
};

var output = [];

for (property in json.Ficha[0]) {
  output.push(property);
  // Uma propriedade de cada vez
  alert(property);
}

// Caso deseje utilizar todas as propriedades de uma única vez
alert(output.join(' | '));
    
01.02.2016 / 17:54