zoukankan      html  css  js  c++  java
  • springboot集成fastjson

    @Configuration
    @EnableWebMvc
    public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
        /**
         * fastjson configuration
         */
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
            FastJsonConfig config = new FastJsonConfig();
            config.setSerializerFeatures(SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
            config.setSerializeFilters((ValueFilter) (object, name, value) -> {
                // 针对map类型value为null时输出""
                if (Objects.isNull(value)) {
                    return "";
                }
                // 数字类型转字符串
                if (value instanceof Number) {
                    return value.toString();
                }
                return value;
            });
            ArrayList<MediaType> mediaTypes = Lists.newArrayList();
            mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
            mediaTypes.add(MediaType.TEXT_HTML);
            mediaTypes.add(MediaType.APPLICATION_JSON);
            mediaTypes.add(MediaType.TEXT_PLAIN);
            converter.setSupportedMediaTypes(mediaTypes);
            converter.setFastJsonConfig(config);
            // 自定义序列化
            config.getSerializeConfig().put(Response.class, new ResponseSerializer(config));
            converters.add(converter);
        }
    }
    

    自定义序列化实现ObjectSerializer 接口

        public static class ResponseSerializer implements ObjectSerializer {
            private final FastJsonConfig fastJsonConfig;
    
            public ResponseSerializer(FastJsonConfig fastJsonConfig) {
                this.fastJsonConfig = fastJsonConfig;
            }
    
            @Override
            public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
                SerializeWriter out = serializer.getWriter();
                Response response = (Response) object;
                out.write(JSON.toJSONString(response.body, fastJsonConfig.getSerializeConfig(), fastJsonConfig.getSerializeFilters(), fastJsonConfig.getSerializerFeatures()));
            }
        }
    

    jsonp注解支持

    fastjson已经内置了一个ResponseBodyAdvice接口的实现JSONPResponseBodyAdvice
    我们只需要配置这个Bean就行了

    @Configuration
    @EnableWebMvc
    public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
        /**
         * use {@link ResponseJSONP}
         * controller return jsonp data
         */
        @Bean
        public ResponseBodyAdvice fastJsonpResponseBodyAdvice() {
            return new JSONPResponseBodyAdvice();
        }
    }
    
  • 相关阅读:
    mojoPortal学习笔记之页面访问权限控制
    页面中添加某模块
    styletreeview.css页面菜单
    mojoPortalprovider模式学习之1.1之IndexBuilderManager
    mojoportal学习笔记之HtmlContent模块
    CLR via c#学习笔记 之 引用类型与值类型
    mojoportal中解决下载文件名乱码问题
    mojoportal学习笔记之显示所有菜单
    blogmodule.css博客栏目
    [转]数据访问组件SqlHelper
  • 原文地址:https://www.cnblogs.com/wilwei/p/10244649.html
Copyright © 2011-2022 走看看