1

私はこのケースを持っています:

public class Project{

    private long id;

    private List<User> users;

    // other properties and getter setter etc
}

public class User{

   @JsonView(MinimalUser.class) 
   private long id;

   @JsonView(MinimalUser.class)
   private String name;

   private ComplexObject anything;

}

今、残りの方法:


    @JsonView(MinimalUser.class)
    @GetMapping("/client/{id}")
    public List<Project> findProjectsByClientId(@PathVariable long id) {
        return projectService.findProjectsByClientId(id);
    }

ここでは、最小限の Users オブジェクトで初期化されたプロジェクトが必要ですが、プロジェクトに "MinimalUser.class" JsonView がないため、何も初期化されないため、初期化されません。

プロジェクト内のすべての変数に @JsonView アノテーションを付けたくありません。これはやり過ぎになるからです。

@JsonView-Filtering/Serialization をプロジェクトのユーザー(子)にのみ適用するようにコントローラーに指示するにはどうすればよいですか?

この呼び出しは正常に機能するため (必要なフィールドのみを取得します):


    @JsonView(MinimalUser.class)
    @GetMapping("/minimal")
    public List<User> findAllUsers() {
        return userService.findAllUsers();
    }

4

1 に答える 1