Json Views können dazu verwendet werden, um je nach Anwendungsfall mehr oder weniger Parameter eines Objekts in ein Json zu Serialisieren/Deserialisieren.
Dafür müssen verschiedene Views definiert werden:
public class Views {
public static class Minimal { }
public static class Extended extends Minimal { }
}
Im DTO werden die Parameter den Views zugeordnet:
public class User {
@JsonView(Views.Minimal.class)
public int id;
@JsonView(Views.Minimal.class)
public String name;
@JsonView(Views.Extended.class)
public String category;
}
Werden keine JsonView Annotation an einem Parameter gesetzt, sind automatisch alle konfigurierten Views erlaubt.
Zur Umwandlung in den richtigen Typ muss nur noch am Controller / der Ressource der gewünscht View konfiguriert werden:
@JsonView(Views.Minimal.class)
@RequestMapping("/user/{id}")
public User getUser(@PathVariable int id) {
return userService.getUserBy(id);
}
Ergibt:
{"id": 1, "name": "Max Mustermann"}
Bei der Konfiguration von:
@JsonView(Views.Extended.class)
@RequestMapping("/user/{id}")
public User getUserDetails(@PathVariable int id) {
return userService.getUserBy(id);
}
wäre das Ergebnis:
{"id": 1, "name": "Max Mustermann", "category": "INTERNAL"}
Link: siehe auch Baeldung