强制Spring Boot使用Gson而非Jackson

看Spring源码。你必须从依赖中完全排除Jackson。我找不到spring.http.converters.preferred-json-mapper在哪里被使用。

https://github.com/spring-projects/spring-boot/issues/7518

public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConverter {

private static final boolean jaxb2Present;

private static final boolean jackson2Present;

private static final boolean jackson2XmlPresent;

private static final boolean jackson2SmilePresent;

private static final boolean gsonPresent;

private static final boolean jsonbPresent;

static {

ClassLoader classLoader = AllEncompassingFormHttpMessageConverter.class.getClassLoader();

jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);

jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) &&

ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);

jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);

jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader);

gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);

jsonbPresent = ClassUtils.isPresent("javax.json.bind.Jsonb", classLoader);

}

public AllEncompassingFormHttpMessageConverter() {

try {

addPartConverter(new SourceHttpMessageConverter<>());

}

catch (Error err) {

// Ignore when no TransformerFactory implementation is available

}

if (jaxb2Present && !jackson2XmlPresent) {

addPartConverter(new Jaxb2RootElementHttpMessageConverter());

}

// THIS IS HERE

if (jackson2Present) {

addPartConverter(new MappingJackson2HttpMessageConverter());

}

else if (gsonPresent) {

addPartConverter(new GsonHttpMessageConverter());

}

else if (jsonbPresent) {

addPartConverter(new JsonbHttpMessageConverter());

}

if (jackson2XmlPresent) {

addPartConverter(new MappingJackson2XmlHttpMessageConverter());

}

if (jackson2SmilePresent) {

addPartConverter(new MappingJackson2SmileHttpMessageConverter());

}

}

}

Copyright © 2022 破界远征沙盒工坊 All Rights Reserved.