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

Asked

Viewed 285 times

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 get only the data:

  • Title: 162023418
  • Payment Made": true

And add to a list.

Could anyone help? I don’t even know where to start.

1 answer

3


I saved your JSON in a file meujson2.json.

I created this class to represent list items:

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 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 that library and that other to put in the classpath.

I compiled with this command line:

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

And so I executed:

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

Here’s the way out:

[162023418 - true, 162023418 - false, 162025348 - true, 162025348 - false, 162026735 - true, 162026735 - false]
  • Friend thanks for the reply, but I am using java web, I tried to adapt more I could not

  • @Leandrosantos The main code must work inside a Servlet or inside any other method. You may not want to read from a file, but this code mounts Json directly from a String that you can pick up anywhere. It mounts a List<PagamentoRealizado> that you can pass to wherever you want, the System.out.println at the end is just to show that works.

  • @Leandrosantos I separated the method pagamentosDoJson of the rest of the main to facilitate the task of adapting the code to where you need it.

  • to yes, what would be the title -> ?

  • @Leandrosantos It is the declaration of a lambda, a feature of the Java language introduced in Java 8.

  • I’m getting an error on this line

  • @Leandrosantos What error? What is your version of Java?

Show 3 more comments

Browser other questions tagged

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