4

我正在尝试定义实体的一些视图以以某些不同的方式将其转换为 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;
    ...
}

和这样的控制器方法:

@JsonView(User.Normal.class)
public static Result getUsers(){
    List<User> users = User.findAll();
    return ok(Json.toJson(users));
}

我希望它只返回用 @JsonView(Normal.class) 注释的字段,显然这不起作用,它还返回 id 字段。是否有可能无需手动使用 ObjectMapper 来获取它?

提前致谢!

4

1 回答 1

1

试试这个......它对我有用。

    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);

    try {
        String ret = mapper.writerWithView(User.Normal.class)
                .writeValueAsString(User.findAll());
于 2015-10-06T07:01:30.447 回答