Retornando apenas métodos no meu json

Boa noite,
Estou estudando web service para desenvolvimento para android e criei um web service em java para teste, ele me retorna o seguinte json:

{"cliente":{"cpf":"01550582232","endereco":"carlos gomes","id":"1","nome":"marcos"}}

Eu estou consumindo este json no android com a api Volley, e gostaria de saber como faço para recuperar apenas um valor especifico como o “endereco” ao invés de todo array?

Fala ae tantam,

Para atingir tal objetivo vc precisa criar seu próprio parser.

Só lembrando que esse json que vc postou não é um array, para ser um array teria que ter o seguinte formato:

{"cliente":[{"cpf":"01550582232","endereco":"carlos gomes","id":"1","nome":"marcos"}]}

Mas enfim, vc precisa criar um método que deserialize pra vc, ficaria mais ou menos assim:

public String deserialize(String content) {
    Gson gson = new Gson();
    //converte o retorno do web service em um JsonElement
    JsonElement jsonElementRoot = gson.fromJson(content, JsonElement.class);
    //converte o JsonElement em JsonObject
    JsonObject root = jsonElementRoot.getAsJsonObject();
    //joga o conteudo de "cliente" em um JsonObject
    JsonObject client = root.getAsJsonObject("cliente");
    //obtem o conteudo do campo endereco
    String endereco = client.get("endereco").toString();

    return endereco;
}

Só lembrando que estou usando abiblioteca Gson para fazer o parser.

1 curtida

Bom dia Levi, bem observado rsrs não é um array eu me equivoquei. Cara muito obrigado por responder, estou aprendendo muito com essa comunidade. Consegui fazer da seguinte forma, como ele já é um objeto eu pego da seguinte forma:

 String valor = response.getString("cliente");

 JSONObject obj = new JSONObject(valor);

 String  cpf = obj.getString("cpf");
 Sting nome = obj.getString("nome");
 Sting id = obj.getString("id");

Eu já tinha ouvido fala dessa biblioteca, GSON, qual seria a vantagem em utilizar ela?

Tantam,

Na verdade essa biblioteca faz exatamente o que nós fizemos, ela faz o parse pra gente.
A grosso modo, se vc quisesse uma lista de clientes a partir do retorno do web service, o código ficaria assim.

List<Cliente> lista = gson.fromJson(content, List.class);

Ata, entendi.
vou dar uma estudada nela, muito obrigado.