ホームページ  >  記事  >  Java  >  Spring MVCでJSONシリアル化からフィールドを動的に除外する方法は?

Spring MVCでJSONシリアル化からフィールドを動的に除外する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 04:37:02885ブラウズ

How to Dynamically Exclude Fields from JSON Serialization in Spring MVC?

Spring MVC での JSON シリアル化からのフィールドの動的除外

機密データまたは無関係なデータを JSON 応答から除外する必要があるシナリオでは、Spring MVC は無視する柔軟なメカニズムを提供します。

@JsonIgnoreProperties アノテーション

@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 Annotation

別のオプションは、個々のフィールドで @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 Example

これらの手法の実際的な実装は、この 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。