java / intermediate
Snippet
Dynamische JSON-Filterung mit @JsonView
@JsonView ermöglicht es zu steuern, welche Felder eines Objekts je nach Kontext in JSON serialisiert werden. Sie können Marker-Interfaces definieren, um 'Views' zu erstellen (z.B. Public vs. Admin) und diese sowohl auf das Datenmodell als auch auf die Controller-Methode anwenden.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Views {public interface Public {}public interface Internal extends Public {}}public class User {@JsonView(Views.Public.class) private String username;@JsonView(Views.Internal.class) private String email;}@RestControllerpublic class UserController {@GetMapping("/public/user")@JsonView(Views.Public.class)}
spring
Erklärung
1
interface Internal extends Public
Vererbung ermöglicht es der Internal-View, alle als Public markierten Felder einzuschließen.
2
@JsonView(Views.Public.class)
Gibt an, dass das annotierte Feld oder die Methode nur Felder verwenden soll, die dieser View zugeordnet sind.
3
@RestController
In Kombination mit @JsonView filtert Spring den Antwort-Body vor dem Senden.