2
respostas

Manipular (alterar) saída do json

Olá. Qual a possibilidade de alterar meu arquivo JSON, tenho dois atributos dentro desse arquivo que possuem relacionamentos @ManyToMany dentro do banco, e esse dois elementos são impressos no JSON como arrays, gostaria e preciso alterá-los para ficarem igual ao atributo dataDespesa, são eles: tipoDespesas e minhasContas!

{
   "iTotalRecords":0,
   "iTotalDisplayRecords":0,
   "data":[
      {
         "id":48,
         "descricaoDespesa":"Despesa 1",
         "dataDespesa":{
            "year":2017,
            "month":"OCTOBER",
            "dayOfMonth":19,
            "dayOfWeek":"THURSDAY",
            "era":"CE",
            "dayOfYear":292,
            "leapYear":false,
            "monthValue":10,
            "chronology":{
               "id":"ISO",
               "calendarType":"iso8601"
            }
         },
         "valorDespesa":160.00,
         "status":"Pago",
         "pagamento":true,
         "tipoDespesas":[
            {
               "id":1,
               "nomeTipoDespesas":"Tipo 1",
               "corTipoDespesas":"#q4weq5",
               "definicaoDespesas":"ESSENCIAL"
            }
         ],
         "minhasContas":[
            {
               "id":4,
               "nome":"Contas 4",
               "dataAcesso":{
                  "year":2017,
                  "month":"APRIL",
                  "dayOfMonth":1,
                  "dayOfWeek":"SATURDAY",
                  "era":"CE",
                  "dayOfYear":91,
                  "leapYear":false,
                  "monthValue":4,
                  "chronology":{
                     "id":"ISO",
                     "calendarType":"iso8601"
                  }
               },
               "saldoAnterior":0.00,
               "saldoAtual":3456.00,
               "saldoFinal":3652.00,
               "tipo":"POUPANCA",
               "cor":"#q8qwe5",
               "dashBoard":false
            }
         ],
         "despesaFixa":true,
         "despesaFixaQuantida":null,
         "despesaFixaTempo":null,
         "repetirLancDespesa":false,
         "repetirPorPeriodo":"MENSAL",
         "addObservacao":null,
         "grupoDespesas":{
            "nomeGrupoDespesas":"Essencial"
         },
         "grupos":1,
         "cor":"#dd8486"
      },
      {
         "id":49,
         "descricaoDespesa":"Despesa 2",
         "dataDespesa":{ },
         "valorDespesa":190.00,
         "status":"Pago",
         "pagamento":true,
         "tipoDespesas":[ ],
         "minhasContas":[ ],
         "despesaFixa":true,
         "despesaFixaQuantida":1,
         "despesaFixaTempo":"Dias",
         "repetirLancDespesa":true,
         "repetirPorPeriodo":null,
         "addObservacao":null,
         "grupoDespesas":{ },
         "grupos":1,
         "cor":"#FF9562"
      }
   ]
}
2 respostas

Oi Clerman, tudo bom?

Se seu relacionamento é ManyToMany nessas entidades, é natural que o json venha representado como um array.

Por exemplo, nesse caso:

 "tipoDespesas":[
            {
               "id":1,
               "nomeTipoDespesas":"Tipo 1",
               "corTipoDespesas":"#q4weq5",
               "definicaoDespesas":"ESSENCIAL"
            }
         ]

A gente tem só um tipoDespesa relacionado. Mas, como é um relacionamento ManyToMany, poderiamos ter mais de um:

 "tipoDespesas":[
            {
               "id":1,
               "nomeTipoDespesas":"Tipo 1",
               "corTipoDespesas":"#q4weq5",
               "definicaoDespesas":"ESSENCIAL"
            },
         {
               "id":2,
               "nomeTipoDespesas":"Tipo 2",
               "corTipoDespesas":"#cor2",
               "definicaoDespesas":"ESSENCIAL"
            }
         ]

O json representa o array [] justamente para caso haja mais de um. Se nunca haverŕa mais de um, você pode trocar esse mapeamento para OneToOne, assim a representação em json serja como a de dataDespesa (OneToOne) =)

Qualquer problema é só falar.

Abraço!

Ok. O problema é que estou tendo um erro ao tentar ler o retorno em um lista quando recupera o atributo da lista em um framework Datatable, se não conseguir resolver no framework, vou ter que utilizar a sua sugestão André. Obrigado pelo momento!