Comment configurer ObjectMapper dans Spring
Problème :
Vous souhaitez configurer ObjectMapper dans Spring pour sérialiser uniquement les éléments annotés avec @JsonProperty. Cependant, malgré le respect des instructions recommandées, la classe NumbersOfNewEvents contient toujours tous les attributs une fois sérialisée.
Explication :
Dans le CompanyObjectMapper personnalisé, vous avez défini le vérificateur de visibilité. pour masquer tous les champs et getters/setters par défaut. Cela empêche ObjectMapper d'accéder et de sérialiser les champs newAccepts et openRequests.
Solution :
Pour obtenir le résultat souhaité, vous pouvez utiliser une approche plus ciblée pour configurer la visibilité vérificateur. Voici un exemple :
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); } }
Cette configuration permettra de sérialiser les propriétés avec l'annotation @JsonProperty, tout en gardant les autres champs masqués.
Configuration Spring Boot :
Si vous utilisez Spring Boot et Jackson 2.4.6 ou supérieur, vous pouvez utiliser ce qui suit configuration :
@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; } }
Cette configuration active la saisie par défaut pour les types polymorphes, permet la sérialisation de tous les champs et active l'inclusion de la vue par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!