Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Substituindo HttpServletResponse

Olá seguindo a sugestão do Matheus Brandino, resolvi e retirar o HttpServletRequest e colocar um retorno como String no meu método que retorna um json:

Esse é o método com o HttpServletRequest


    @RequestMapping(value = "listJson", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody void doPost(HttpServletRequest request, HttpServletResponse response) throws Throwable {

        List<MinhasReceitas> listMinhasReceitas = receitasService.findAll();

        ObjectWriter objW = new ObjectMapper().writer().withDefaultPrettyPrinter();

        DataTableMinhasReceitas dataTableMinhasReceitas = new DataTableMinhasReceitas();

        dataTableMinhasReceitas.setData(listMinhasReceitas);

        String json = objW.writeValueAsString(dataTableMinhasReceitas);

        response.getWriter().print(json);
    }

que retorna no navegador o json nesse formato:

{
  "iTotalRecords" : 0,
  "iTotalDisplayRecords" : 0,
  "data" : [ {
    "id" : 4,
    "descricaoReceita" : "Rceita 4",
    "dataReceita" : {
      "year" : 2017,
      "month" : "MAY",
      "chronology" : {
        "id" : "ISO",
        "calendarType" : "iso8601"
      },
      "dayOfMonth" : 25,
      "dayOfWeek" : "THURSDAY",
      "era" : "CE",
      "dayOfYear" : 145,
      "leapYear" : false,
      "monthValue" : 5
    },
    "valorReceita" : 9000.00,
    "receitaFixa" : false,
    "receitaFixaQuantidade" : 0,
    "receitaFixaTempo" : null,
    "repetirLancReceita" : false,
    "repetirPorPeriodo" : null,
    "pagamento" : false,
    "addObservacao" : "",
    "tipoReceitas" : [ {
      "id" : 2,
      "nome" : "Tipo da conta 2",
      "corTipoReceita" : "#werwd",
      "nomeTipoReceita" : "Tipo da conta 2"
    } ],
    "minhasContas" : [ {
      "id" : 1,
      "nome" : "Conta 1",
      "saldoAnterior" : 0.00,
      "saldoAtual" : 59000.00,
      "saldoFinal" : 59000.00,
      "cor" : "#dffsd",
      "dashBoard" : true
    } ]
  } ]
}

Até aqui tranquilo; Agora o meu método para que passou a retornar uma String

    @RequestMapping(value = "listJson", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody String doPost() throws Throwable {

        List<MinhasReceitas> listMinhasReceitas = receitasService.findAll();

        ObjectWriter objW = new ObjectMapper().writer().withDefaultPrettyPrinter();

        DataTableMinhasReceitas dataTableMinhasReceitas = new DataTableMinhasReceitas();

        dataTableMinhasReceitas.setData(listMinhasReceitas);

        String json = objW.writeValueAsString(dataTableMinhasReceitas).toString();

        System.out.println("Lista retornada com todos os itens: " + json);

        return json;
    }

Mas que retorna agora um json cheio de barras.

"{\r\n  \"iTotalRecords\" : 0,\r\n  \"iTotalDisplayRecords\" : 0,\r\n  \"data\" : [ {\r\n    \"id\" : 1,\r\n    \"descricaoReceita\" : \"Receita 1\",\r\n    \"dataReceita\" : {\r\n      \"year\" : 2017,\r\n      \"month\" : \"FEBRUARY\",\r\n      \"chronology\" : {\r\n        \"id\" : \"ISO\",\r\n        \"calendarType\" : \"iso8601\"\r\n      },\r\n      \"dayOfMonth\" : 2,\r\n      \"dayOfWeek\" : \"THURSDAY\",\r\n      \"era\" : \"CE\",\r\n      \"dayOfYear\" : 33,\r\n      \"leapYear\" : false,\r\n      \"monthValue\" : 2\r\n    },\r\n    \"valorReceita\" : 45000.00,\r\n    \"receitaFixa\" : false,\r\n    \"receitaFixaQuantidade\" : 0,\r\n    \"receitaFixaTempo\" : null,\r\n    \"repetirLancReceita\" : false,\r\n    \"repetirPorPeriodo\" : null,\r\n    \"pagamento\" : true,\r\n    \"addObservacao\" : \"\",\r\n    \"tipoReceitas\" : [ {\r\n      \"id\" : 1,\r\n      \"nome\" : \"Tipo da conta\",\r\n      \"corTipoReceita\" : \"#drqas\",\r\n      \"nomeTipoReceita\" : \"Tipo da conta\"\r\n    } ],\r\n    \"minhasContas\" : [ {\r\n      \"id\" : 1,\r\n      \"nome\" : \"Conta 1\",\r\n      \"saldoAnterior\" : 0.00,\r\n      \"saldoAtual\" : 59000.00,\r\n      \"saldoFinal\" : 59000.00,\r\n      \"cor\" : \"#dffsd\",\r\n      \"dashBoard\" : true\r\n    } ]\r\n  }, {\r\n    \"id\" : 2,\r\n    \"descricaoReceita\" : \"Receita 2\",\r\n    \"dataReceita\" : {\r\n      \"year\" : 2017,\r\n      \"month\" : \"MARCH\",\r\n      \"chronology\" : {\r\n        \"id\" : \"ISO\",\r\n        \"calendarType\" : \"iso8601\"\r\n      },\r\n      \"dayOfMonth\" : 20,\r\n      \"dayOfWeek\" : \"MONDAY\",\r\n      \"era\" : \"CE\",\r\n      \"dayOfYear\" : 79,\r\n      \"leapYear\" : false,\r\n      \"monthValue\" : 3\r\n    },\r\n    \"valorReceita\" : 30000.00,\r\n    \"receitaFixa\" : false,\r\n    \"receitaFixaQuantidade\" : 0,\r\n    \"receitaFixaTempo\" : null,\r\n    \"repetirLancReceita\" : false,\r\n    \"repetirPorPeriodo\" : null,\r\n    \"pagamento\" : true,\r\n    \"addObservacao\" : \"\",\r\n    \"tipoReceitas\" : [ {\r\n      \"id\" : 2,\r\n      \"nome\" : \"Tipo da conta 2\",\r\n      \"corTipoReceita\" : \"#werwd\",\r\n      \"nomeTipoReceita\" : \"Tipo da conta 2\"\r\n    } ],\r\n    \"minhasContas\" : [ {\r\n      \"id\" : 3,\r\n      \"nome\" : \"Conta 3\",\r\n      \"saldoAnterior\" : 0.00,\r\n      \"saldoAtual\" : 30800.00,\r\n      \"saldoFinal\" : 30800.00,\r\n      \"cor\" : \"#fdfsddf\",\r\n      \"dashBoard\" : true\r\n    } ]\r\n  }, {\r\n    \"id\" : 3,\r\n    \"descricaoReceita\" : \"Receita 3\",\r\n    \"dataReceita\" : {\r\n      \"year\" : 2017,\r\n      \"month\" : \"FEBRUARY\",\r\n      \"chronology\" : {\r\n        \"id\" : \"ISO\",\r\n        \"calendarType\" : \"iso8601\"\r\n      },\r\n      \"dayOfMonth\" : 28,\r\n      \"dayOfWeek\" : \"TUESDAY\",\r\n      \"era\" : \"CE\",\r\n      \"dayOfYear\" : 59,\r\n      \"leapYear\" : false,\r\n      \"monthValue\" : 2\r\n    },\r\n    \"valorReceita\" : 50000.00,\r\n    \"receitaFixa\" : false,\r\n    \"receitaFixaQuantidade\" : 0,\r\n    \"receitaFixaTempo\" : null,\r\n    \"repetirLancReceita\" : false,\r\n    \"repetirPorPeriodo\" : null,\r\n    \"pagamento\" : false,\r\n    \"addObservacao\" : \"\",\r\n    \"tipoReceitas\" : [ {\r\n      \"id\" : 1,\r\n      \"nome\" : \"Tipo da conta\",\r\n      \"corTipoReceita\" : \"#drqas\",\r\n      \"nomeTipoReceita\" : \"Tipo da conta\"\r\n    } ],\r\n    \"minhasContas\" : [ {\r\n      \"id\" : 2,\r\n      \"nome\" : \"Conta 2\",\r\n      \"saldoAnterior\" : 0.00,\r\n      \"saldoAtual\" : 50600.00,\r\n      \"saldoFinal\" : 50600.00,\r\n      \"cor\" : \"#fdfsddf\",\r\n      \"dashBoard\" : true\r\n    } ]\r\n  }, {\r\n    \"id\" : 4,\r\n    \"descricaoReceita\" : \"Rceita 4\",\r\n    \"dataReceita\" : {\r\n      \"year\" : 2017,\r\n      \"month\" : \"MAY\",\r\n      \"chronology\" : {\r\n        \"id\" : \"ISO\",\r\n        \"calendarType\" : \"iso8601\"\r\n      },\r\n      \"dayOfMonth\" : 25,\r\n      \"dayOfWeek\" : \"THURSDAY\",\r\n      \"era\" : \"CE\",\r\n      \"dayOfYear\" : 145,\r\n      \"leapYear\" : false,\r\n      \"monthValue\" : 5\r\n    },\r\n    \"valorReceita\" : 9000.00,\r\n    \"receitaFixa\" : false,\r\n    \"receitaFixaQuantidade\" : 0,\r\n    \"receitaFixaTempo\" : null,\r\n    \"repetirLancReceita\" : false,\r\n    \"repetirPorPeriodo\" : null,\r\n    \"pagamento\" : false,\r\n    \"addObservacao\" : \"\",\r\n    \"tipoReceitas\" : [ {\r\n      \"id\" : 2,\r\n      \"nome\" : \"Tipo da conta 2\",\r\n      \"corTipoReceita\" : \"#werwd\",\r\n      \"nomeTipoReceita\" : \"Tipo da conta 2\"\r\n    } ],\r\n    \"minhasContas\" : [ {\r\n      \"id\" : 1,\r\n      \"nome\" : \"Conta 1\",\r\n      \"saldoAnterior\" : 0.00,\r\n      \"saldoAtual\" : 59000.00,\r\n      \"saldoFinal\" : 59000.00,\r\n      \"cor\" : \"#dffsd\",\r\n      \"dashBoard\" : true\r\n    } ]\r\n  } ]\r\n}"

Como posso resolver isso?

2 respostas
solução!

Você poderia retornar o objeto diretamente com um código parecido com o abaixo:

    @RequestMapping(value = "listJson", method = RequestMethod.GET, produces = "application/json")
    public ResponseEntity<DataTableMinhasReceitas> doPost() throws Throwable {

        List<MinhasReceitas> listMinhasReceitas = receitasService.findAll();

        DataTableMinhasReceitas dataTableMinhasReceitas = new DataTableMinhasReceitas();

        dataTableMinhasReceitas.setData(listMinhasReceitas);

        return ResponseEntity.status(HttpStatus.OK).body(dataTableMinhasReceitas);
    }

Denis Ricci, perfeito! Encaixou como uma luva, muito grato!