对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

Jackson JSON

Spring 提供对 Jackson JSON 库的支持。spring-doc.cadn.net.cn

JSON 视图

Spring WebFlux 内置支持 Jackson 的序列化视图(Serialization Views), 它允许仅渲染 Object 中的部分字段。要在 @ResponseBodyResponseEntity 控制器方法中使用该功能, 你可以使用 Jackson 的 @JsonView 注解来激活一个序列化视图类,如下例所示:spring-doc.cadn.net.cn

@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 允许指定一个视图类数组,但在每个控制器方法中只能指定其中一个。如果需要激活多个视图,请使用组合接口。