Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

IllegalStateException NOT a jSonObject. Não consigo transformar a string em JSonArray()

Olá pessoal. Estou com uma dificuldade e como tenho pouca prática com objetos JSON queria um auxílio de vcs. Esse código abaixo é para criar gerar um objeto JSON. Não sei por qual motivo ele não está funcionando na hora do ParseObject, transformar a String tagDados em um JsonArray. Alguém sabe o que fazer para tratar esse problema ? Vlw.

private static JsonArray gerarAlertas() {
        String[] titulos = {"Título 1", "Título 2", "Título 3", "Título 4", "Título 5"};
        String[] mensagens = {"Mensagem 1", "Mensagem 2", "Mensagem 3", "Mensagem 4", "Mensagem 5"};
        Random random = new Random();
        int qtd = random.nextInt(10);
        JsonArray arrItems = new JsonArray();
        String tagDados;
        String item ="";
        String rec ="";
        if (qtd > 0) {
            // Status, título e mensagens
            for(int x = 0; x < qtd; x++){
                if(x != qtd && x > 0){
                  rec = ",";
                }
                tagDados = rec + "[";
                tagDados +=  "{\"status\": " + random.nextInt(3) + "," +
                            "\"titulo\": \""+ titulos[random.nextInt(5)] + "\"," +
                            "\"texto\": \"" + mensagens[random.nextInt(5)] + "\"," +
                            "\"recomendacoes\":[";

                // Recomendações
                for (int i = 0; i < qtd; i++) {
                   item = gerarValorRecomendacoes(random.nextInt(5));
                }

                tagDados += item;

                tagDados = tagDados.concat("]}").concat("]");

                try{


                    // Transforma arquivo texto em JSON
                    JsonObject jsonObject = new JsonParser().parse(tagDados).getAsJsonObject();
                    arrItems.add(jsonObject);

                } catch (IllegalStateException e){
                    System.out.println("Error: " + e.getMessage());
                }

            }


        } 

        return  arrItems;
    }
3 respostas

Olá Fernando!

Não manjo muito de parse Json mas estou disponivel para te ajudar.

Tenta usar a classe JsonArray:

JsonArray jarray =  new JsonParser().parse(tagDados).getJsonArray();

Você pode obter uma lista dos métodos que podem ser utilizados direto na documentação. Veja se algum te ajuda:

https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html

solução

Bom dia, Guilherme. Consegui resolver. Realmente a solução passa pelo JSonArray, só que, a solução seria criar um JsonElement. Abraço!!

try{

                JsonElement jsonObject = new JsonParser().parse(tagDados).getAsJsonArray();
                arrItems.add(jsonObject);                    

            } catch (IllegalStateException e){
                System.out.println("Error: " + e.getMessage());
            }

Opa, massa Fernando!

Vou marcar sua resposta como solução.

Obrigado por compartilhar conosco.

Bons estudos!