Heim >Java >javaLernprogramm >Wie konfiguriere ich ObjectMapper im Frühjahr für die benutzerdefinierte JSON-Serialisierung und Deserialisierung?

Wie konfiguriere ich ObjectMapper im Frühjahr für die benutzerdefinierte JSON-Serialisierung und Deserialisierung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-05 07:15:16840Durchsuche

How to Configure ObjectMapper in Spring for Custom JSON Serialization and Deserialization?

ObjectMapper in Spring konfigurieren

In Spring kann der ObjectMapper entsprechend spezifischer Anforderungen konfiguriert werden. Dies ist besonders nützlich, wenn Sie das Serialisierungs- und Deserialisierungsverhalten Ihrer JSON-Daten steuern möchten.

Ein häufiges Szenario besteht darin, bestimmte Eigenschaften von der Serialisierung auszuschließen, sofern sie nicht explizit mit Anmerkungen versehen sind. Um dies zu erreichen, folgen wir diesen Schritten:

  1. Erstellen Sie einen benutzerdefinierten ObjectMapper:

    public class CompanyObjectMapper extends ObjectMapper {
        public CompanyObjectMapper() {
            super();
            setVisibilityChecker(getSerializationConfig()
                    .getDefaultVisibilityChecker()
                    .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                    .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                    .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                    .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                    .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
        }
    }
  2. Fügen Sie den benutzerdefinierten ObjectMapper in Spring's ein Konfiguration:

    <bean>
  3. Konfigurieren Sie Spring MVC für die Verwendung des benutzerdefinierten ObjectMapper:

    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

Dieser Ansatz funktioniert jedoch möglicherweise nicht wie erwartet, wenn Sie die Spring-Versionen 3.0.5 und Jackson 1.8.0 verwenden. Um dieses Problem zu beheben, wird empfohlen, die folgende annotationsbasierte Konfiguration mit Spring Boot und Jackson 2.4.6 oder neuer zu verwenden:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);

        return mapper;
    }
}

Diese Konfiguration ermöglicht es dem ObjectMapper, nur Eigenschaften zu serialisieren, die das @ haben JsonProperty-Annotation, die die gewünschte Anforderung erfüllt.

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich ObjectMapper im Frühjahr für die benutzerdefinierte JSON-Serialisierung und Deserialisierung?. 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