機密データまたは無関係なデータを JSON 応答から除外する必要があるシナリオでは、Spring MVC は無視する柔軟なメカニズムを提供します。
@JsonIgnoreProperties アノテーションを使用すると、JSON へのシリアル化から特定のフィールドを除外できます。 POJO に適用すると、フィールド名のリストを引数として受け取り、JSON 表現からそれらのフィールドを省略します。たとえば、質問で説明されている User オブジェクトから createdBy フィールドと updatedBy フィールドを除外する場合:
@Entity @Table(name = "user") @JsonIgnoreProperties(ignoreUnknown = true, value = {"createdBy", "updatedBy"}) public class User { // Class variables and methods }
このアノテーションを使用すると、JSON 応答には value パラメーターで明示的に指定されたフィールドのみが含まれます。つまり、userId、userName、および emailId です。
別のオプションは、個々のフィールドで @JsonIgnore 注釈を使用することです。このアノテーションは、シリアル化と逆シリアル化の両方でフィールドが無視されるべきであることを示します。これは、除外されるフィールドのリストが動的であり、実行時の条件に基づいて変更される可能性がある場合に便利です。たとえば、encryptedPwd フィールドを動的に除外する場合:
@Entity @Table(name = "user") @JsonIgnoreProperties(ignoreUnknown = true) public class User { // Other class variables and methods @JsonIgnore private String encryptedPwd; }
encryptedPwd フィールドに @JsonIgnore を設定すると、encryptedPwd フィールドが get メソッドに含まれている場合でも、JSON シリアル化から除外されます。 POJO.
これらの手法の実際的な実装は、この GitHub リポジトリにあります: https://github.com/spring-projects/spring-framework/tree/main/ spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcAnnotationConfigTests.
以上がSpring MVCでJSONシリアル化からフィールドを動的に除外する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。