Get data from a JSON array and add it to a list in Java WEB

0

I have a list in JSON:

 {"_status":"sucesso","_dados":{"situacao":"PROCESSADO","mensagem":"Consulta realizada com sucesso","processados":0,"titulos":[],"titulosNaoConciliados":[{"Ocorrencias":[],"CodigosOcorrencias":[],"CodigoMovimento":"06","TituloNossoNumero":"162023418","TituloNossoNumeroOriginal":"2341","TituloDataVencimento":null,"PagamentoValorPago":"74","PagamentoValorCredito":"0,00","PagamentoValorTaxaCobranca":"0,00","PagamentoValorAcrescimos":"0,00","PagamentoData":"16/06/2016","PagamentoDataCredito":"17/06/2016","PagamentoRealizado":true,"TituloNumeroDocumento":""},{"Ocorrencias":[],"CodigosOcorrencias":[],"CodigoMovimento":"28","TituloNossoNumero":"162023418","TituloNossoNumeroOriginal":"2341","TituloDataVencimento":null,"PagamentoValorPago":"74","PagamentoValorCredito":"0,00","PagamentoValorTaxaCobranca":"1,8","PagamentoValorAcrescimos":"0,00","PagamentoData":"16/06/2016","PagamentoDataCredito":"16/06/2016","PagamentoRealizado":false,"TituloNumeroDocumento":""},{"Ocorrencias":[],"CodigosOcorrencias":[],"CodigoMovimento":"06","TituloNossoNumero":"162025348","TituloNossoNumeroOriginal":"2534","TituloDataVencimento":null,"PagamentoValorPago":"100","PagamentoValorCredito":"0,00","PagamentoValorTaxaCobranca":"0,00","PagamentoValorAcrescimos":"0,00","PagamentoData":"16/06/2016","PagamentoDataCredito":"17/06/2016","PagamentoRealizado":true,"TituloNumeroDocumento":""},{"Ocorrencias":[],"CodigosOcorrencias":[],"CodigoMovimento":"28","TituloNossoNumero":"162025348","TituloNossoNumeroOriginal":"2534","TituloDataVencimento":null,"PagamentoValorPago":"100","PagamentoValorCredito":"0,00","PagamentoValorTaxaCobranca":"1,8","PagamentoValorAcrescimos":"0,00","PagamentoData":"16/06/2016","PagamentoDataCredito":"16/06/2016","PagamentoRealizado":false,"TituloNumeroDocumento":""},{"Ocorrencias":[],"CodigosOcorrencias":[],"CodigoMovimento":"06","TituloNossoNumero":"162026735","TituloNossoNumeroOriginal":"2673","TituloDataVencimento":null,"PagamentoValorPago":"21,13","PagamentoValorCredito":"0,00","PagamentoValorTaxaCobranca":"0,00","PagamentoValorAcrescimos":"0,00","PagamentoData":"16/06/2016","PagamentoDataCredito":"17/06/2016","PagamentoRealizado":true,"TituloNumeroDocumento":""},{"Ocorrencias":[],"CodigosOcorrencias":[],"CodigoMovimento":"28","TituloNossoNumero":"162026735","TituloNossoNumeroOriginal":"2673","TituloDataVencimento":null,"PagamentoValorPago":"21,13","PagamentoValorCredito":"0,00","PagamentoValorTaxaCobranca":"1,8","PagamentoValorAcrescimos":"0,00","PagamentoData":"16/06/2016","PagamentoDataCredito":"16/06/2016","PagamentoRealizado":false,"TituloNumeroDocumento":""}]}}

I need to get this list and just get the data:

  • TitleNossoNumber: 162023418
  • Payment Made ": true

And add it to a list.

Could anyone help? I do not even know where to start.

    
asked by anonymous 04.07.2018 / 20:30

1 answer

3

I saved your JSON to a meujson2.json file.

I created this class to represent the items in the list:

public final class PagamentoRealizado {
    private final String tituloNossoNumero;
    private final boolean pagamentoRealizado;

    public PagamentoRealizado(String tituloNossoNumero, boolean pagamentoRealizado) {
        this.tituloNossoNumero = tituloNossoNumero;
        this.pagamentoRealizado = pagamentoRealizado;
    }

    public String getTituloNossoNumero() {
        return tituloNossoNumero;
    }

    public boolean isPagamentoRealizado() {
        return pagamentoRealizado;
    }

    @Override
    public String toString() {
        return tituloNossoNumero + " - " + pagamentoRealizado;
    }
}

I've created this code to create the list:

import java.io.IOException;
import java.io.FileInputStream;
import java.io.StringReader;
import java.io.File;
import java.nio.file.Files;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;
import javax.json.JsonReader;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonValue;

public class LerJson2 {

    private static List<PagamentoRealizado> pagamentosDoJson(String json)
            throws IOException
    {
        JsonReader reader = Json.createReader(new StringReader(json));
        JsonObject status = reader.readObject();
        JsonObject dados = status.getJsonObject("_dados");
        JsonArray titulosNaoConciliados = dados.getJsonArray("titulosNaoConciliados");
        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());
    }

    public static void main(String[] args) throws IOException {
        File f = new File("meujson2.json");
        String json = new String(Files.readAllBytes(f.toPath()), StandardCharsets.UTF_8);
        List<PagamentoRealizado> pagamentos = pagamentosDoJson(json);
        System.out.println(pagamentos);
    }
}

I used this library and that other to put in the classpath.

I've compiled this command line:

javac -encoding UTF-8 -cp javax.json-1.1.2.jar;javax.json-api-1.1.2.jar LerJson2.java

And I executed like this:

java -cp javax.json-1.1.2.jar;javax.json-api-1.1.2.jar;. LerJson2

Here's the output:

[162023418 - true, 162023418 - false, 162025348 - true, 162025348 - false, 162026735 - true, 162026735 - false]
    
04.07.2018 / 20:38