1
resposta

JSONArray para Java Object

Estou com o seguinte erro quando tento converter um JSONArray para um Object e gostaria de uma ajuda.

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to org.json.JSONObject at gson.br.com.gson.Application.main(Application.java:32)

public static void main(String[] args) {

    Cliente cliente = new Cliente("Lucas", "Pastor Alberto Augusto", "Bom Retiro", 21);
    Cliente cliente2 = new Cliente("JJ", "Pastor Alberto Augusto", "Bom TT", 33);

    Cliente cliente3 = new Cliente("RJ", "Pastor Alberto Augusto", "Bom RT", 44);

    List<Cliente> clientes = new ArrayList<Cliente>();
    clientes.add(cliente);
    clientes.add(cliente2);
    clientes.add(cliente3);

    String json2 = new Gson().toJson(clientes);

    System.out.println(json2);

    JSONArray json = new JSONArray();
    json.put(json2);

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

        JSONObject jsonObject = (JSONObject) json.get(i);
        Cliente c = new Cliente();

        c.setNome(jsonObject.optString("nome"));
        c.setEndereço(jsonObject.optString("endereço"));
        c.setBairro(jsonObject.optString("bairro"));
        c.setIdade(jsonObject.optInt("idade", 0));

        System.out.println(c);
    }

}
1 resposta

Oi Carlos,

Basicamente, quando você fez:

json.put(json2);

você inputou uma String (que é um json gerado a partir de clientes). Quando você fez json.get(i); o que está sendo retornado é uma String (o próprio json em formato string). Logo, você não pode tentar fazer um cast para JSONObject:

(JSONObject) json.get(i); <<< Lança um ClassCastException

Abraço!