Read JSON and turn it into Java list

Asked

Viewed 476 times

3

I have the following JSON:

{
    "_status": "sucesso",
    "_dados": [
        {
            "IdIntegracao": "H1xo7lOOX",
            "SacadoCPFCNPJ": "08896903912",
            "SacadoEmail": "[email protected]",
            "SacadoEnderecoNumero": "228",
            "SacadoEnderecoBairro": "SANTA MARIA",
            "SacadoEnderecoCEP": "87970000",
            "SacadoEnderecoCidade": "NOVA LONDRINA",
            "SacadoEnderecoComplemento": "casa",
            "SacadoEnderecoLogradouro": "RUA BELO HORIZONTE,228",
            "SacadoEnderecoPais": "Brasil",
            "SacadoEnderecoUF": "PR",
            "SacadoNome": "LEANDRO SANTOS CUSTODIO",
            "SacadoTelefone": null,
            "TituloDataDesconto": "13/10/2018 00:00:00",
            "TituloDataDesconto2": null,
            "TituloDataEmissao": "13/09/2018 00:00:00",
            "TituloDataVencimento": "13/10/2018 00:00:00",
            "TituloDataMulta": "14/10/2018 00:00:00",
            "PagamentoData": "13/09/2018 00:00:00",
            "PagamentoDataCredito": "14/09/2018 00:00:00",
            "TituloPrazoProtesto": null,
            "TituloMensagem01": "Infomania Sistemas Empresariais",
            "TituloMensagem02": "Após vencimento multa de 0,03 e juros de 0,50.",
            "TituloMensagem03": "Obrigado pela preferência.",
            "TituloMensagem04": null,
            "TituloMensagem05": null,
            "TituloMensagem06": null,
            "TituloMensagem07": null,
            "TituloMensagem08": null,
            "TituloMensagem09": null,
            "TituloInstrucao1": null,
            "TituloInstrucao2": null,
            "TituloOcorrencias": [
                {
                    "codigo": "02",
                    "mensagem": "Movimento: Entrada confirmada",
                    "criado": "2018-09-14T13:34:09.000Z",
                    "atualizado": "2018-09-14T13:34:09.000Z"
                },
                {
                    "codigo": "06",
                    "mensagem": "Movimento: Liquidação Normal",
                    "criado": "2018-09-14T13:34:09.000Z",
                    "atualizado": "2018-09-14T13:34:09.000Z"
                },
                {
                    "codigo": "28",
                    "mensagem": "Movimento: Tarifa",
                    "criado": "2018-09-14T13:34:09.000Z",
                    "atualizado": "2018-09-14T13:34:09.000Z"
                },
                {
                    "codigo": "B3",
                    "mensagem": "Tarifa de registro de entrada do título",
                    "criado": "2018-09-14T13:34:09.000Z",
                    "atualizado": "2018-09-14T13:34:09.000Z"
                }
            ],
            "TituloMovimentos": [
                {
                    "codigo": "02",
                    "mensagem": "Movimento: Entrada confirmada",
                    "data": "13/09/2018 00:00:00",
                    "ocorrencias": []
                },
                {
                    "codigo": "06",
                    "mensagem": "Movimento: Liquidação Normal",
                    "data": "13/09/2018 00:00:00",
                    "ocorrencias": [
                        {
                            "codigo": "H5"
                        }
                    ]
                },
                {
                    "codigo": "28",
                    "mensagem": "Movimento: Tarifa",
                    "data": "13/09/2018 00:00:00",
                    "ocorrencias": [
                        {
                            "codigo": "B3",
                            "mensagem": "Tarifa de registro de entrada do título"
                        }
                    ]
                }
            ],
            "TituloNossoNumero": "2844",
            "TituloNumeroDocumento": "2844",
            "TituloOrigemDocumento": null,
            "PagamentoRealizado": true,
            "TituloValorJuros": "0,50",
            "PagamentoValorCredito": "0,00",
            "TituloValorDesconto": "0,00",
            "TituloValorDescontoTaxa": "0,00",
            "TituloValorDescontoTaxa2": "0,00",
            "TituloValorOutrosAcrescimos": "0,00",
            "TituloValorMulta": "0,00",
            "TituloValorMultaTaxa": "0,00",
            "PagamentoValorPago": "3,00",
            "PagamentoValorTaxaCobranca": "1,50",
            "TituloValorAbatimento": "0,00",
            "PagamentoValorOutrasDespesas": "0,00",
            "PagamentoValorIOF": "0,00",
            "PagamentoValorOutrosCreditos": "0,00",
            "PagamentoDataTaxaBancaria": "13/09/2018 00:00:00",
            "TituloValor": "3,00",
            "situacao": "LIQUIDADO",
            "impressao_visualizada": false,
            "motivo": null,
            "PagamentoValorDesconto": "0,00",
            "PagamentoValorAcrescimos": "0,00",
            "PagamentoValorAbatimento": "0,00",
            "TituloAgenciaCobradora": null,
            "TituloAgenciaCobradoraDv": null,
            "TituloDataDocumento": null,
            "TituloLinhaDigitavel": "74891.11828 02844.307286 04612.331035 6 76760000000300",
            "TituloNossoNumeroImpressao": "182028443",
            "TituloCodigoBarras": "74896767600000003001118202844307280461233103",
            "TituloDataImpressaoVisualizada": null,
            "SacadoCelular": "44999958297",
            "TituloValorCobrado": "0,00",
            "TituloDataJuros": "14/10/2018 00:00:00",
            "TituloCodigoMulta": "2",
            "TituloAceite": null,
            "TituloPrazoBaixa": null,
            "TituloSacadorAvalista": "CHINA E REIS LOCAÇÃO DE MÁQUINAS LTDA",
            "TituloSacadorAvalistaEndereco": "Avenida JK 466",
            "TituloSacadorAvalistaCidade": "Nova Londrina",
            "TituloSacadorAvalistaCEP": "87970000",
            "TituloSacadorAvalistaUF": "PR",
            "TituloInscricaoSacadorAvalista": "08815635000159",
            "TituloCodBaixaDevolucao": null,
            "TituloCodigoJuros": null,
            "TituloDocEspecie": null,
            "TituloCodDesconto": null,
            "TituloCodDesconto2": null,
            "TituloCodEmissaoBloqueto": null,
            "TituloOutrasDeducoes": null,
            "TituloUsoBanco": null,
            "TituloPagamentoMinimo": "0,00",
            "TituloLocalPagamento": "PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DE CRÉDITO SICREDI",
            "TituloForcarFatorVencimento": null,
            "TituloInformacoesAdicionais": null,
            "TituloInstrucoes": null,
            "TituloParcela": null,
            "TituloVariacaoCarteira": null,
            "TituloCategoria": null,
            "TituloModalidade": "1",
            "TituloCodCliente": null,
            "TituloIos": null,
            "TituloCip": null,
            "TituloCodProtesto": 3,
            "CedenteAgencia": "072804",
            "CedenteAgenciaDV": null,
            "CedenteCodigoBanco": "748",
            "CedenteConta": "61233",
            "CedenteContaNumeroDV": "2",
            "CedenteCarteira": "1",
            "CedenteNumeroConvenio": "61233"
        }
    ],
    "_meta": {
        "_itens_por_pagina": 20,
        "_paginacao": {
            "_proximo": false,
            "_anterior": false
        },
        "_total": 1
    }
}

I need to get some information from there. I’m using the following method:

private static List<PagamentoRealizado> pagamentosDoJson(String json)
        throws IOException {
    JsonReader reader = Json.createReader(new StringReader(json));
    JsonObject status = reader.readObject();
    JsonObject dados = status.getJsonObject("sucesso");
    JsonArray titulosNaoConciliados = dados.getJsonArray("_dados");
    return titulosNaoConciliados
            .stream()
            .map(titulo -> {
                JsonObject obj = (JsonObject) titulo;
                String tituloNossoNumero = obj.getString("TituloNossoNumero");
                boolean pagamentoRealizado = obj.getBoolean("PagamentoRealizado");
                return new PagamentoRealizado(tituloNossoNumero, pagamentoRealizado);
            }).collect(Collectors.toList());
}

But I get a mistake from java.lang.NullPointerException here: JsonArray titulosNaoConciliados = dados.getJsonArray("_dados");

Would anyone have any idea how to fix this?

1 answer

3


When using dados.getJsonArray("_dados"); you’re trying to read the _dados from within the sucesso, which makes no sense. In fact, the node is not called sucesso and yes _status and he’s a String that should be dealt with getString instead of getJsonObject.

The cause of the problem seems to be that you reversed the variables dados and status and ended up getting confused. This confusion is typically created because you have given incorrect names to variables and so use one thing thinking it is another. In fact, I’d recommend calling it raiz instead of dados the JSON node representing the object read as a whole to avoid confusion.

So these lines:

JsonObject status = reader.readObject();
JsonObject dados = status.getJsonObject("sucesso");
JsonArray titulosNaoConciliados = dados.getJsonArray("_dados");

That should be it:

JsonObject raiz = reader.readObject();
String status = raiz.getString("_status");
JsonArray titulosNaoConciliados = raiz.getJsonArray("_dados");
  • Thanks for the reply, plus the error persists in _status. org.glassfish.json.Jsonstringimpl cannot be cast to javax.json.Jsonobject at org.glassfish.json.Jsonobjectbuilderimpl$Jsonobjectimpl.getJsonObject(Jsonobjectbuilderimpl.java:184)

  • @Leandrosantos Reply edited.

  • Very good guy worked out thanks.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.