Serialização de objeto java usando GSON

Bom dia, boa tarde, boa noite pessoal.

Tenho o seguinte problema:

Eu estou fazendo uma serialização utilizando a bilioteca do GSON no java, mas acontece que, ela me monta um arquivo JSON mas em formato de texto ou seja ela gera uma String enorme com o conteúdo dentro, sendo que o que eu preciso é montar um objeto JSON para eu enviar para o frontent, mas eu não estou entendendo.

Então eu preciso montar um jsonObject para enviar para meu frontend.

Service


@Service
public class Service {

    static String resBing;

    static String listBroker;

    public  String corretor(DTO dto) throws Exception {

       *Aqui tem o código de comunicação, mas não está aqui o problema*

         //Armazena a resposta da API no DTO (Aqui estou deserializando para salvar em meus DTO)
        ResponseText response = new Gson().fromJson(resBing, ResponseText.class);

        ResponseText responseText = new ResponseText();

        //Monta o Json de resposta para o Frontend
        listBroker = GSON.toJson(response);

  

       // System.out.println("O que retornou: " + resposta );

        return listBroker;
    }

   

}

Controller



@RestController
@RequestMapping("/servico")
public class controller {

    private final BingBrokerService bingBrokerService;

    public BingController(BingBrokerService bingBrokerService) {
        this.bingBrokerService = bingBrokerService;
       
    }

    @PostMapping(path = {"/corretor"})
    public  ResponseEntity<String> corretor(@RequestBody DTO dto) throws Exception {
        String result = bingBrokerService.corretor(dto);

        return  ResponseEntity.ok().body("result " + result);
    }

  

}

Parece que vc está usando spring. Com isso, vc não precisa se preocupar em fazer a serialização para json “na mão”, pois o spring usa o jackson para serialização e já faz isso para vc de forma automática para o objeto retornado no endpoint.

Se vc quiser receber o json no seu frontend, vc não pode concatenar a string assim no retorno como vc está fazendo, basta retornar:

@PostMapping(path = {"/corretor"})
public ResponseEntity<SeuObjeto> corretor(@RequestBody DTO dto) throws Exception {
  SeuObjeto result = bingBrokerService.corretor(dto);
  return ResponseEntity.ok(result);
}

Usei o nome de classe SeuObjeto apenas para exemplificar o objeto que vc quer retornar

1 curtida

Legal, mas eu não entendi ainda o que seria esse Objeto, no caso ele seria minha resposta do service?

Isso, no seu caso, seria a resposta do service mesmo. Com isso, a serialização será feito de forma automática pelo jackson.

1 curtida

Meu amigo, vc me salvou, muito obrigado por essa explicação. Deu muito certo aqui.