Heim > Java > javaLernprogramm > Wie konfiguriere ich den ObjectMapper von Spring so, dass nur @JsonProperty-annotierte Elemente serialisiert werden?

Wie konfiguriere ich den ObjectMapper von Spring so, dass nur @JsonProperty-annotierte Elemente serialisiert werden?

DDD
Freigeben: 2024-12-02 15:19:11
Original
603 Leute haben es durchsucht

How to Configure Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Elements?

So konfigurieren Sie ObjectMapper in Spring

Problem:

Sie möchten ObjectMapper in konfigurieren Spring serialisiert nur die Elemente, die mit @JsonProperty annotiert sind. Trotz der Befolgung der empfohlenen Anweisungen enthält die NumbersOfNewEvents-Klasse jedoch bei der Serialisierung immer noch alle Attribute.

Erklärung:

Im benutzerdefinierten CompanyObjectMapper haben Sie die Sichtbarkeitsprüfung festgelegt um alle Felder und Getter/Setter standardmäßig auszublenden. Dies verhindert, dass ObjectMapper auf die Felder newAccepts und openRequests zugreift und diese serialisiert.

Lösung:

Um das gewünschte Ergebnis zu erzielen, können Sie die Sichtbarkeit gezielter konfigurieren Checker. Hier ist ein Beispiel:

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);
    }
}
Nach dem Login kopieren

Diese Konfiguration ermöglicht die Serialisierung der Eigenschaften mit der Annotation @JsonProperty, während andere Felder ausgeblendet bleiben.

Spring Boot-Konfiguration:

Wenn Sie Spring Boot und Jackson 2.4.6 oder höher verwenden, können Sie Folgendes verwenden Konfiguration:

@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;
    }
}
Nach dem Login kopieren

Diese Konfiguration ermöglicht die Standardtypisierung für polymorphe Typen, ermöglicht die Serialisierung aller Felder und ermöglicht die Standardeinbindung von Ansichten.

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich den ObjectMapper von Spring so, dass nur @JsonProperty-annotierte Elemente serialisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage