feign解析器を変更してjsonを置換
3287 ワード
@Bean
public Logger.Level getFeignLoggerLevel() {
return Logger.Level.FULL ;
}
@Bean
public ResponseEntityDecoder feignDecoder() {
HttpMessageConverter fastJsonConverter = createFastJsonConverter();
ObjectFactory objectFactory = () -> new HttpMessageConverters(fastJsonConverter);
return new ResponseEntityDecoder(new SpringDecoder(objectFactory));
}
@Bean
public SpringEncoder feignEncoder(){
HttpMessageConverter fastJsonConverter = createFastJsonConverter();
ObjectFactory objectFactory = () -> new HttpMessageConverters(fastJsonConverter);
return new SpringEncoder(objectFactory);
}
private HttpMessageConverter createFastJsonConverter() {
// fastJson
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
// =============================================================
List supportedMediaTypes = new ArrayList<>();
supportedMediaTypes.add(MediaType.APPLICATION_JSON);
supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML);
supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);
supportedMediaTypes.add(MediaType.APPLICATION_PDF);
supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML);
supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML);
supportedMediaTypes.add(MediaType.APPLICATION_XML);
supportedMediaTypes.add(MediaType.IMAGE_GIF);
supportedMediaTypes.add(MediaType.IMAGE_JPEG);
supportedMediaTypes.add(MediaType.IMAGE_PNG);
supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM);
supportedMediaTypes.add(MediaType.TEXT_HTML);
supportedMediaTypes.add(MediaType.TEXT_MARKDOWN);
supportedMediaTypes.add(MediaType.TEXT_PLAIN);
supportedMediaTypes.add(MediaType.TEXT_XML);
fastConverter.setSupportedMediaTypes(supportedMediaTypes);
//
FastJsonConfig fastJsonConfig = new FastJsonConfig();
//
//WriteNullListAsEmpty :List null, [], null
//WriteNullStringAsEmpty : null, "", null
//DisableCircularReferenceDetect : , false( )
//WriteNullBooleanAsFalse:Boolean null, false, null
//WriteMapNullValue: null , false
fastJsonConfig.setSerializerFeatures(
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteMapNullValue,
SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteEnumUsingToString,
SerializerFeature.WriteNullStringAsEmpty
);
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
fastConverter.setFastJsonConfig(fastJsonConfig);
return fastConverter;
}