我正在尝试定义一些实体的视图,以某种不同的方式将其转换为json。在Jax-rs中,也可以使用@JsonView来注释REST资源方法,以指定每个资源中需要哪个视图。是否可以在PlayFramework 2中使用Controller方法执行类似操作?
我的实体:
public class User {
public static class Normal{};
public static class Complete extends Normal{};
@Id
@JsonView(Complete.class)
private ObjectId id;
@JsonView(Normal.class)
@Property("user")
private String username;
@Property("pass")
@JsonView(Normal.class)
private String password;
...
}
这样的Controller方法:
@JsonView(User.Normal.class)
public static Result getUsers(){
List<User> users = User.findAll();
return ok(Json.toJson(users));
}
我希望它只返回用@JsonView(Normal.class)注释的字段,显然这不起作用,它还返回id字段。是否可以在不必手动使用ObjectMapper的情况下获取它?
提前致谢!
答案 0 :(得分:1)
试试这个...它对我有用。
ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
try {
String ret = mapper.writerWithView(User.Normal.class)
.writeValueAsString(User.findAll());