Heim >Java >javaLernprogramm >Wie konfiguriere ich ObjectMapper im Frühjahr für die benutzerdefinierte JSON-Serialisierung und Deserialisierung?
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:
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)); } }
Fügen Sie den benutzerdefinierten ObjectMapper in Spring's ein Konfiguration:
<bean>
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!