Java 使用Jackson序列化属性时应用JsonView
我有以下要序列化的类Java 使用Jackson序列化属性时应用JsonView,java,jackson,Java,Jackson,我有以下要序列化的类 class User { private String username; @JsonView(Views.Default.class) private List<User> followers; } 其思想是获取一个用户并显示追随者列表(用户类型),但不包含followers字段 { "username": "aaaaa", "followers": [ { "username" : "bbbbb" }, {
class User {
private String username;
@JsonView(Views.Default.class)
private List<User> followers;
}
其思想是获取一个用户并显示追随者列表(用户类型),但不包含followers
字段
{
"username": "aaaaa",
"followers": [
{ "username" : "bbbbb" },
{ "username" : "ccccc" }
]
}
当序列化用户
对象时,告诉Jackson在followers
属性上应用Follower
视图的最佳方法是什么
在当前配置中,我仍然可以在用户数组中看到followers
属性
谢谢。您需要使用
ObjectWriter
而不是ObjectMapper
来指定用于序列化的活动视图。例如:
String json = mapper.writerWithView(Views.Compact.class)
.writeValueAsJson(user);
因为您需要使用视图而不是
Default
(或其子类):视图用于包含。没有followers属性意味着什么?是否仅返回json数组作为响应?@eg04lt3r这意味着必须使用视图.followers.class
视图对followers
中的用户对象进行反序列化followers
属性将在外部对象上可见,但在内部对象中不可见。如果我理解正确,您希望在序列化时在用户的子集合中隐藏followers属性,对吗?@eg04lt3r!我认为你应该使用某种过滤器,请检查这个链接。它可能会帮助你,我想如果没有过滤器,就无法解决这个问题。
String json = mapper.writerWithView(Views.Compact.class)
.writeValueAsJson(user);