Class object generation error

2

I have the following method:

private ArrayList Clientes (JSONObject jObect) {

    Log.e("Lis: ", jObect.toString());
    /* 
        A linha acima impime
        E/Lis:: {"clientes":[{"idClientesT":"1","tipo":"s","nome":"Carlos"},{"idClientesT":"2","tipo":"s","nome":"Rogério"}]}
     */

    ArrayList jArray = new ArrayList();

    try {

        // Transforma a jSon de resposta em um objjeo de Classe
        for (int i = 0; i < jObect.length(); i++) {

            int id =  jObect.getInt("idClientesT");
            String tipo = jObect.getString("tipo");
            String nome = jObect.getString("nome");

            Clientes cliente = new Clientes(id, tipo, nome);

            jArray.add(cliente);

    } catch (JSONException e) {
        Log.e("JSON Parser", "Erro no parsing doo objeto " + e.toString());
    }

    return jArray;

}

It turns out that in class object generation:

    for (int i = 0; i < jObect.length(); i++) {
        int id =  jObect.getInt("idClientesT");

It is giving error:

Here's the class:

package carcleo.com.radiosingular.classes;

public class Clientes {
    private int idClientesT;
    private String tipo;
    private String nome;

    public Clientes(int idClientesT, String tipo, String nome) {
        this.idClientesT = idClientesT;
        this.tipo = tipo;
        this.nome = nome;
    }

    public int getIdClientesT() {
        return idClientesT;
    }

    public String getTipo() {
        return tipo;
    }

    public String getNome() {
        return nome;
    }
}

How would that part look,

int id =  jObect.getInt("idClientesT");

So that this error did not occur?

Editing:

This Json I'm calling returns a string as follows:

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

I tried the way below and it also did not work:

private ArrayList Clientes (JSONObject jObect) {

    ArrayList jArray = new ArrayList();

    try {

        JSONObject jb = jObect.getJSONObject("Clientes");

        // Transforma a jSon de resposta em um objjeo de Classe
        for (int i = 0; i < jb.length(); i++) {
            JSONObject jbi = jb.getJSONObject(i);
            int id =  Integer.parseInt(jb.getString("idClientesT"));
            //int id =  jObect.getInt("idClientesT");
            String tipo = jb.getString("tipo");
            String nome = jb.getString("nome");

            Clientes cliente = new Clientes(id, tipo, nome);

            jArray.add(cliente);

        }

    } catch (JSONException e) {
        Log.e("JSON Parser", "Erro no parsing doo objeto " + e.toString());
    }

    return jArray;

}
    
asked by anonymous 19.12.2018 / 23:37

2 answers

1

You need to convert string from json to int .

Not specified, but by comment in code, realize that value is string :

"idClientesT":"1" // <-- com aspas

For this you can do this:

int id =  Integer.parseInt(jObect.getString("idClientesT")); 

If you were this way:

"idClientesT":1 // <-- sem aspas

You could use getInt()

Editing

Before you loop the object you need to redeem the array. Then loop and pick up all the data. It would look like this:

    try {
        JSONArray clientesLista = jObect.getJSONArray("clientes"); // aqui você faz o resgate da lista
        // Transforma a jSon de resposta em um objjeo de Classe
        for (int i = 0; i < clientesLista.length(); i++) {

            int id =  Integer.parseInt(clientesLista.get(i).getString("idClientesT"));
            String tipo = clientesLista.get(i).getString("tipo");
            String nome = clientesLista.get(i).getString("nome");

            Clientes cliente = new Clientes(id, tipo, nome);

            jArray.add(cliente);

      } // <-- estava faltando fechar o loop

    } catch (JSONException e) {
        Log.e("JSON Parser", "Erro no parsing doo objeto " + e.toString());
    }
    
20.12.2018 / 00:08
0

Well, thanks to the effort of colleague Andrei that in fortunately deleted his answer, I will put here how the solution was and that she can help other colleagues.

private ArrayList<Clientes> Clientes (JSONObject jObect) {
   // Cria o Array List de Clientes
    ArrayList<Clientes> aCli = null;

    try {

        aCli = new ArrayList<>();
        //Pega o primeiro índice do Array de Objetos, no caso, o array Clientes
        JSONArray clientesLista = jObect.getJSONArray("clientes"); // aqui você faz o resgate da lista

        // Transforma a JSONArray de resposta em um Array de objjeo da Classe Clientes
        for (int i = 0; i < clientesLista.length(); i++) {
            //Pega cada íncide do array e atribui a uma variável
            JSONObject jSobj = clientesLista.getJSONObject(i);
            //Indetifica os campos do objeto
            int id =  Integer.parseInt(jSobj.getString("idClientesT"));
            //int id =  jSobj.getInt("idClientesT");
            String tipo = jSobj.getString("tipo");
            String nome = jSobj.getString("nome");
           //popula o objeto da classe de clientes
            Clientes cliente = new Clientes(id, tipo, nome);
            //Adiciona o objeto de Classe criado ào Array de Clientes
            aCli.add(cliente);
        }

    } catch (JSONException e) {
        Log.e("JSON Parser", "Erro no parsing doo objeto " + e.toString());
    }
    //Retorno o array de Clientes.
    return aCli;

}
    
20.12.2018 / 13:56