zoukankan      html  css  js  c++  java
  • spring boot 规范json返回值

    spring boot 规范json返回值

    spring boot 接口返回配置 @ResponseBody ,则返回自定义的对象,解析成json。
    但是,部分字段能友好的展示出来。如 Date,Long。Date必须手动格式化,才能输出想要的格式,还要注意时区问题。Long类型,相对过长的Long类型,会进行四舍五入等处理,失去准确性。

    如Date类型处理需要给属性值加上注解:

        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    

    Long类型配置和其他配置,可以交给以下代码解决

    
    import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.module.SimpleModule;
    import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
    import java.math.BigDecimal;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.List;
    import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.MediaType;
    import org.springframework.http.converter.HttpMessageConverter;
    import org.springframework.http.converter.StringHttpMessageConverter;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    /**
     * web配置
     *
     * @author
     * @date 2017-08-23 15:48
     */
    @Configuration
    @EnableWebMvc
    public class WebConfig extends WebMvcConfigurerAdapter {
        @Bean
        public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
            MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
            //设置日期格式
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    
            /**
             * 序列换成json时,将所有的long变成string
             * 因为js中得数字类型不能包含所有的java long值
             */
            SimpleModule simpleModule = new SimpleModule();
            simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
            simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
            simpleModule.addSerializer(BigDecimal.class, ToStringSerializer.instance);
            objectMapper.registerModule(simpleModule);
            mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
    
            //设置中文编码格式
    //        List<MediaType> list = new ArrayList<MediaType>();
    //        list.add(MediaType.APPLICATION_JSON_UTF8);
    //        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
            return mappingJackson2HttpMessageConverter;
        }
    
        @Bean
        public StringHttpMessageConverter getStringHttpMessageConverter() {
    
            StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(Charset.forName("GBK"));
    
            //设置中文编码格式
            List<MediaType> list = new ArrayList<MediaType>();
            list.add(MediaType.APPLICATION_XML);
            stringHttpMessageConverter.setSupportedMediaTypes(list);
            return stringHttpMessageConverter;
        }
    
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            List<HttpMessageConverter<?>> convertersList = new HttpMessageConverters().getConverters();
            for(int i = 0; i < convertersList.size(); i++){
                if(convertersList.get(i) instanceof MappingJackson2HttpMessageConverter){
                    converters.add(getMappingJackson2HttpMessageConverter());
                }else if(convertersList.get(i) instanceof StringHttpMessageConverter){
                    converters.add(getStringHttpMessageConverter());
                }else{
                    converters.add(convertersList.get(i));
                }
            }
        }
    
    }
    
  • 相关阅读:
    基于term vector深入探查数据
    oracle 行转列
    oracle 统计成绩
    最全最新个税计算公式---今天你税了吗?
    .net反混淆脱壳工具de4dot的使用
    使用ILSpy软件反编译.Net应用程序的方法及注意事项
    EmguCV使用Stitcher类来拼接图像
    从睡姿就可以看出你的性格,据说非常准,快存!
    分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm。。。
    【转载】关于.NET下开源及商业图像处理(PSD)组件
  • 原文地址:https://www.cnblogs.com/chenglc/p/11690128.html
Copyright © 2011-2022 走看看