Serialização de objeto java usando GSON

4 respostas Resolvido
javaprogramação
Andre0Luis

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);
    }

  

}

4 Respostas

Lucas_Camara

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

Andre0Luis

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

Lucas_Camara
Solucao aceita

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

Andre0Luis

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

Criado 26 de novembro de 2021
Ultima resposta 29 de nov. de 2021
Respostas 4
Participantes 2