Tutorial Android – Receber dados via Json

On 8 de dezembro de 2014 by Jeferson

JSON (JavaScript Object Notation) é um formato de intercâmbio de dados leve. Atualmente muito utilizado, por que além de sua leveza é muito simples e compacto. Trazendo assim um solução prática para a conversa entre seu aplicativo e o seu webservice.

Vamos começar escrevendo a classe que vai fazer o contato com o servidor e receber o Json de resposta:

public class JsonClass {

       InputStream input = null;
       JSONObject jObect = null;
       String json = "";

        //Recebe sua url
        public JSONObject getJSONFromUrl(String url) {

            //HTTP request
            try {
                // default HttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                input = httpEntity.getContent();

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        input, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                input.close();
                json = sb.toString();
                Log.i("JRF", json);
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }

            // Transforma a String de resposta em um JSonObject 
            try {
                jObect = new JSONObject(json);
            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
            }

            // retorna o objeto
            return jObect;

        }
    }

Não se esqueça de adicionar permissão para internet no seu manifest:

<uses-permission android:name=”android.permission.INTERNET” />

Agora, vamos chamar nossa classe, mas não se esqueça, por ser uma operação que requer acesso a internet e processamento de dados é altamente recomendado que a chamada seja feita dentro de uma async task evitando assim qualquer travamento da interface. Um outro ponto a se atentar é sempre antes de chamadas assim, fazer teste de conexão com a internet, para que tudo funcione da melhor forma possível.

JSONObject contact = null;
JsonClass json = new JsonClass();
contact = json.getJSONFromUrl("Sua URL aqui");

Bom, agora você tem seus dados recebidos em um JsonObject, o que você tem que fazer agora é só recuperar aqueles dados que te interessem. Vamos imaginar que o Jason de resposta, fosse um contato  assim :

{
      "id": 001,
      "nome": Jeferson,
      "endereco": Rua 2,
      "email": moc.liamgnull@12frej 
    }

Para recuperar você deve fazer da seguinte forma:

String id = contact.getString("id");
String name = contact.getString("nome");
String address = contact.getString("endereco");
String email = contact.getString("email");

Bom  pessoal, essa é  uma forma bem simples de trabalhar com Json em android, existem inúmeras outras formas dependendo de como ou o que você vai fazer. Obrigado e até o próximo post.

Summary
Tutorial Android - Receber dados via Json
Article Name
Tutorial Android - Receber dados via Json
Description
Tutorial Android - Receber dados via Json
Author
Publisher Name
iMobilis
Publisher Logo

7 Responses to “Tutorial Android – Receber dados via Json”

  • Show de bola, isso serve pra chamar qualquer arquivo do webservice? também serve para vídeos?

  • Cara não esta funcionando, poderia me dar uma ajuda??

  • Bom dia, parabéns pelo exemplo. Simples e prático.
    Tenho uma pergunta: Você tem algum método implementado de como “enviar” dados para o web service?

  • Qual compile eu uso para importar as classes?

  • Olá, estou usando a sua classe com a minha activity

    package carcleo.com.radiosingular;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;

    import carcleo.com.radiosingular.classes.JsonClass;

    public class form extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.form);

    String url = “http://hotplateprensas.com.br/ws/clientest.php”;
    JSONObject clientesLista = null;
    JsonClass json = new JsonClass();
    clientesLista = json.getJSONFromUrl(url);

    clientes(clientesLista);

    }

    public void clientes(JSONObject jsonCli) {

    try {

    JSONArray arrayPlanetas = jsonCli.getJSONArray(“clientes”);

    for (int i = 0; i < arrayPlanetas.length(); i++) {

    JSONObject cliente = arrayPlanetas.getJSONObject(i);

    Log.d("idClientesT", cliente.getString("idClientesT"));
    Log.d("tipo", cliente.getString("tipo"));
    Log.d("nome", cliente.getString("nome"));

    }

    } catch (JSONException e) {
    e.printStackTrace();
    }
    }

    }

    A URL http://hotplateprensas.com.br/ws/clientest.php, traz um resultado assim

    {"clientes":[{"idClientesT":"1","tipo":"s","nome":"Carlos"},{"idClientesT":"2","tipo":"s","nome":"Rogério"}]}

    Mas não compila.

    Onde estou errando?:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *