Spring で ObjectMapper を構成する方法
問題:
で ObjectMapper を構成したいと考えています。 @JsonProperty アノテーションが付けられた要素のみをシリアル化する Spring。ただし、推奨される手順に従っているにもかかわらず、NumbersOfNewEvents クラスにはシリアル化時にすべての属性が含まれています。
説明:
カスタム CompanyObjectMapper で、可視性チェッカーを設定しました。すべてのフィールドとゲッター/セッターをデフォルトで非表示にします。これにより、ObjectMapper が newAccepts フィールドと openRequests フィールドにアクセスしてシリアル化できなくなります。
解決策:
望ましい結果を達成するには、よりターゲットを絞ったアプローチを使用して可視性を構成できます。チェッカー。以下に例を示します。
public class CompanyObjectMapper extends ObjectMapper { public CompanyObjectMapper() { super(); SerializationConfig config = getSerializationConfig(); config.withView(Some.class) // Specify which view to use .withVisibility(JsonAutoDetect.Visibility.NONE) .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); } }
この構成では、他のフィールドを非表示にしたまま、@JsonProperty アノテーションを持つプロパティをシリアル化できます。
Spring Boot 構成:
Spring Boot および Jackson 2.4.6 以降を使用している場合は、次を使用できます。構成:
@Configuration public class JacksonConfiguration { @Bean public ObjectMapper objectMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); // Enable default typing for polymorphic types mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); // Allow serialization of fields mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true); // Enable default view inclusion return mapper; } }
この構成では、ポリモーフィック型のデフォルトの型付けが有効になり、すべてのフィールドのシリアル化が可能になり、デフォルトのビューの包含が有効になります。
以上が@JsonProperty アノテーション付き要素のみをシリアル化するように Spring の ObjectMapper を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。