package cc.mrbird.febs.common.configure; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @Configuration public class HttpMessageConverterConfigure { @Bean public MappingJackson2HttpMessageConverter markdownHttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); // 配置更宽松的 JSON 解析选项 mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true); mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true); converter.setObjectMapper(mapper); converter.setDefaultCharset(StandardCharsets.UTF_8); // 支持 text/markdown 和 text/plain 类型 List supportedMediaTypes = new ArrayList<>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON); supportedMediaTypes.add(MediaType.TEXT_PLAIN); supportedMediaTypes.add(new MediaType("text", "markdown", StandardCharsets.UTF_8)); supportedMediaTypes.add(new MediaType("text", "html", StandardCharsets.UTF_8)); converter.setSupportedMediaTypes(supportedMediaTypes); return converter; } }