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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-07 14:02:17719Durchsuche

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

ObjectMapper in Spring konfigurieren: Feldserialisierung einschränken

Um den ObjectMapper so zu konfigurieren, dass nur mit @JsonProperty annotierte Felder serialisiert werden, sollten Sie den folgenden Ansatz in Betracht ziehen:

1. Erstellen Sie einen benutzerdefinierten ObjectMapper

public class CustomObjectMapper extends ObjectMapper {
    public CustomObjectMapper() {
        super();
        setVisibility(Visibility.NONE).enable(Visibility.NON_EMPTY);
    }
}

Dieser benutzerdefinierte ObjectMapper deaktiviert die Serialisierung von nicht annotierten Feldern und schließt nur Felder ein, deren Wert ungleich Null ist.

2. Registrieren Sie den benutzerdefinierten ObjectMapper in Spring

Registrieren Sie den benutzerdefinierten ObjectMapper in Ihrer servlet.xml wie folgt:

<bean>

3. Annotationsbasierte Konfiguration aktualisieren

Stellen Sie sicher, dass Ihre @Configuration-Klasse den benutzerdefinierten CountingJacksonHttpMessageConverter registriert:

@Configuration
public class JacksonConfiguration {

    @Bean
    public MappingJacksonHttpMessageConverter jsonConverter() {
        MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
        converter.setObjectMapper(jacksonObjectMapper());
        return converter;
    }
}

4. Stellen Sie sicher, dass die Versionsabhängigkeit korrekt ist.

Stellen Sie sicher, dass Sie eine kompatible Version von Jackson verwenden. In diesem Fall wird Jackson 2.x für die Verwendung mit Spring empfohlen.

5. Überprüfen Sie, ob standardmäßige Jackson-Anmerkungen ausgeschlossen werden.

Stellen Sie sicher, dass die standardmäßigen Jackson-Anmerkungen von der Sichtbarkeitserkennung ausgeschlossen sind, indem Sie die setVisibility-Methode in Ihrem benutzerdefinierten ObjectMapper überschreiben.

Zusätzliche Überlegungen:

  • Dieser Ansatz serialisiert nur Felder, die mit annotiert sind @JsonProperty und nicht diejenigen, die mit anderen Annotationen (z. B. @JsonSerialize) gekennzeichnet sind.
  • Beachten Sie, dass der Ausschluss von Feldern von der Serialisierung die Funktionalität anderer Komponenten beeinträchtigen kann, die auf dem Standardverhalten basieren (z. B. Persistenz, Validierung).
  • Weitere Informationen zur erweiterten Serialisierungsanpassung finden Sie in der Jackson-Dokumentation.

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

Stellungnahme:
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