Como receber e enviar JSON em uma API Java?

Em APIs REST Java, a comunicação entre cliente e servidor é feita via JSON, utilizando bibliotecas como Jackson para serialização e desserialização.

Como receber e enviar JSON em uma API Java?

O formato JSON (JavaScript Object Notation) é amplamente utilizado para comunicação entre sistemas e APIs REST. No Spring Boot, o processo de enviar e receber JSON é feito automaticamente pela integração com a biblioteca Jackson.

1. Criando um Endpoint que Retorna JSON

O Spring Boot converte automaticamente objetos Java em JSON quando um método retorna um objeto ou lista. Veja um exemplo de endpoint REST que retorna JSON:

import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class ProdutoController {

    @GetMapping("/produtos")
    public List<Produto> listarProdutos() {
        return List.of(
            new Produto(1, "Notebook", 4500.00),
            new Produto(2, "Smartphone", 2200.00)
        );
    }
}

class Produto {
    private int id;
    private String nome;
    private double preco;

    public Produto(int id, String nome, double preco) {
        this.id = id;
        this.nome = nome;
        this.preco = preco;
    }

    public int getId() { return id; }
    public String getNome() { return nome; }
    public double getPreco() { return preco; }
}

Explicação:

  • O método listarProdutos() retorna uma lista de objetos Produto.
  • O Spring Boot converte essa lista automaticamente para JSON.
  • O JSON gerado será semelhante a:
[
    { "id": 1, "nome": "Notebook", "preco": 4500.00 },
    { "id": 2, "nome": "Smartphone", "preco": 2200.00 }
]

2. Criando um Endpoint que Recebe JSON (POST)

Agora, vamos criar um endpoint que recebe dados JSON e os converte automaticamente para um objeto Java:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class ProdutoController {

    @PostMapping("/produtos")
    public Produto criarProduto(@RequestBody Produto produto) {
        System.out.println("Produto recebido: " + produto.getNome());
        return produto; // Retorna o produto recebido como JSON
    }
}

Explicação:

  • O @RequestBody indica que o JSON recebido será convertido para um objeto Produto automaticamente.
  • Se enviarmos um JSON via Postman:
{
    "id": 3,
    "nome": "Tablet",
    "preco": 1800.00
}
  • O servidor imprimirá Produto recebido: Tablet no console.
  • E responderá com o mesmo JSON enviado.

3. Testando os Endpoints

  • Para testar a resposta do GET:
    • Acesse http://localhost:8080/api/produtos no navegador ou Postman.
  • Para testar o POST:
    • No Postman, envie um JSON para http://localhost:8080/api/produtos.
    • Configure o tipo da requisição como POST e o Content-Type como application/json.

4. Como Personalizar a Serialização JSON?

Caso precise modificar como os dados são enviados/recebidos, utilize anotações do Jackson:

import com.fasterxml.jackson.annotation.JsonProperty;

class Produto {
    private int id;

    @JsonProperty("descricao")
    private String nome;
    private double preco;

    public Produto(int id, String nome, double preco) {
        this.id = id;
        this.nome = nome;
        this.preco = preco;
    }

    public int getId() { return id; }
    public String getNome() { return nome; }
    public double getPreco() { return preco; }
}

Explicação:

  • @JsonProperty("descricao") faz com que o campo nome seja exibido como "descricao" no JSON.

Conclusão

Enviar e receber JSON em APIs REST no Spring Boot é extremamente fácil, graças à integração automática com a biblioteca Jackson. O framework cuida da conversão entre objetos Java e JSON, permitindo um desenvolvimento mais rápido e eficiente.

A comunicação entre aplicações modernas depende fortemente do formato JSON. No passado, a conversão de objetos para JSON e vice-versa era um processo manual e demorado. Com a adoção de bibliotecas como Jackson no Spring Boot, esse processo foi automatizado, tornando a troca de dados entre cliente e servidor muito mais eficiente.

Algumas aplicações:

  • Desenvolvimento de APIs para aplicações web e mobile
  • Integração com bancos de dados e sistemas externos
  • Criação de microsserviços baseados em REST
  • Comunicação entre frontend e backend

Dicas para quem está começando

  • Use Postman para testar requisições JSON
  • Garanta que a anotação @RequestBody esteja presente ao receber JSON
  • Personalize a conversão JSON usando a biblioteca Jackson
  • Se precisar consumir APIs externas, aprenda a usar RestTemplate

Contribuições de Rodrigo Farias

Compartilhe este tutorial: Como receber e enviar JSON em uma API Java

Compartilhe este tutorial

Continue aprendendo:

Como usar o Spring Boot para criar APIs REST

O Spring Boot simplifica a criação de APIs REST em Java, eliminando configurações complexas e acelerando o desenvolvimento.

Tutorial anterior

O que é um Controller no Spring MVC

No Spring MVC, um Controller é responsável por lidar com requisições HTTP e retornar respostas para o cliente.

Próximo tutorial