修改feign解析器替换json
阅读原文时间:2023年07月11日阅读:2

@Bean
public Logger.Level getFeignLoggerLevel() {
return Logger.Level.FULL ;
}

@Bean  
public ResponseEntityDecoder feignDecoder() {  
    HttpMessageConverter fastJsonConverter = createFastJsonConverter();  
    ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(fastJsonConverter);  
    return new ResponseEntityDecoder(new SpringDecoder(objectFactory));  
}

@Bean  
public SpringEncoder feignEncoder(){  
    HttpMessageConverter fastJsonConverter = createFastJsonConverter();  
    ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(fastJsonConverter);  
    return new SpringEncoder(objectFactory);  
}

private HttpMessageConverter createFastJsonConverter() {

    //创建fastJson消息转换器  
    FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

    //升级最新版本需加=============================================================  
    List<MediaType> 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;  
}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章