Jackson JSON
Spring 支持 Jackson JSON 库。
JSON 视图
Spring WebFlux内置了对Jackson的序列化视图的支持,这允许仅渲染Object中的一部分字段。要在使用@ResponseBody或ResponseEntity控制器方法时利用这一功能,你可以使用Jackson的@JsonView注解来激活一个序列化视图类,如下例所示:
- Java
- Kotlin
@RestController
public class UserController {
@GetMapping("/user")
@JsonView(User.WithoutPasswordView.class)
public User getUser() {
return new User("eric", "7!jd#h23");
}
}
public class User {
public interface WithoutPasswordView {};
public interface WithPasswordView extends WithoutPasswordView {};
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
@JsonView(WithoutPasswordView.class)
public String getUsername() {
return this.username;
}
@JsonView(WithPasswordView.class)
public String getPassword() {
return this.password;
}
}
@RestController
class UserController {
@GetMapping("/user")
@JsonView(User.WithoutPasswordView::class)
fun getUser(): User {
return User("eric", "7!jd#h23")
}
}
class User(
@JsonView(WithoutPasswordView::class) val username: String,
@JsonView(WithPasswordView::class) val password: String
) {
interface WithoutPasswordView
interface WithPasswordView : WithoutPasswordView
}
备注
@JsonView 允许使用多个视图类数组,但每个控制器方法中只能指定一个。如果需要激活多个视图,请使用复合接口。