4

エンティティのいくつかのビューを定義して、いくつかの異なる方法で json に変換しようとしています。Jax-rs では、REST リソース メソッドに @JsonView でアノテーションを付けて、各リソースで必要なビューを指定することもできます。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 を使用せずに取得することは可能ですか?

前もって感謝します!

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 に答える