Comment retourner un objet Json comme réponse à un Rest Controller via le framework Spring Boot ?

Avec le framework Sping Boot, vous pouvez développer des applications simples en facilitant la configuration, une étape fastidieuse quand on utilise les frameworks Spring ou Spring MVC. Son utilisation est donc particulièrement adaptée pour développer une API fonctionnant en REST. La gestion du format JSON est même automatique.

Lorsque vous développez votre service REST, vous devez indiquer la notation "@RestController" au début de votre fichier. Grâce à cette notation, le framework comprend que votre service est un contrôleur gérant des interactions REST. Il inclut automatiquement la librairie Jackson et convertit les réponses directement au format JSON. Vous n'avez pas besoin d'effectuer la conversion vous-mêmes. Si vous utilisez vos propres objets, la seule condition est que ce soit des POJO, c’est-à-dire des objets instanciés d'une classe Java qui n'hérite ni n'implémente aucune autre classe. Ces objets doivent également posséder au minimum les getters, les méthodes retournant la valeur des attributs.

//Exemple de POJO
public class Message {
  private final long id;
  private final String contenu;

  public Message(long id, String contenu) {
    this.id = id;
    this.contenu = contenu;
  }

  public long getId() {
    return id;
  }

  public String getContenu() {
    return contenu;
  }
}

Si vous ne souhaitez pas coder vos propres objets, vous pouvez utiliser une Map composée de chaînes de caractères en clés et d'objets de la classe "Object" en valeur (Map<String, Object>). Un objet de la classe "Properties" sera également automatiquement transformé.

Il ne reste plus qu'à implémenter le contrôleur. Vos méthodes n'ont plus qu'à retourner des objets de votre classe et les réponses seront alors automatiquement transformées en JSON.

@RestController
public class ControleurMessage {
    @RequestMapping("/message")
    public Message message(Int id) {
        return new Message(id, "Ceci est un test");
    }
}

JavaScript