美文网首页Spring BootSpring 开发Java学习笔记
Spring Boot json (Date类型入参、格式化,以

Spring Boot json (Date类型入参、格式化,以

作者: 殷天文 | 来源:发表于2018-03-29 18:08 被阅读879次

    首先,我们要知道 springboot 默认使用 jackson 解析 json(当然这里也是可以配置使用其他 json 解析框架)。
    在不配置其他 json 解析的情况下,我们可以通过 spring boot 提供的注解和配置 来让 jackson 帮助我们提高开发效率

    一、 使用 @ResponseBody @RequestBody, Date 类型对象入参,返回json格式化

    解决方法如下:

    1. application.properties中加入如下代码
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    
    2. 如果个别实体需要使用其他格式的 pattern,在实体上加入注解即可
    import org.springframework.format.annotation.DateTimeFormat;
    import com.fasterxml.jackson.annotation.JsonFormat;
    public class MrType {
        @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
        @DateTimeFormat(pattern="yyyy-MM-dd")
        private Date createdDate;
    }
    

    关于spring boot 时间类型支持我做了以下测试:

    1. application.properties 配置注释,不添加注解:spring 无法接收时间参数(400),json 输出 "2018-03-29T09:45:31.513+0000"
    2. application.properties 配置开启,不添加注解:仅支持 yyyy-MM-dd HH:mm:ss 的格式参数和 json 输出
    3. application.properties 配置开启,实体添加 @JsonFormat(pattern = "yyyy-MM-dd"),实体可接受 yyyy-MM-dd HH:mm:ssyyyy-MM-dd 格式的参数,json输出格式为 yyyy-MM-dd,由此可见@JsonFormat是限制Date 类型 json 输出的,但是为什么对接受的类型也造成了影响?有待考证
    4. application.properties 配置开启,实体添加 @DateTimeFormat(pattern = "yyyy-MM-dd"),结果与第二条测试一样?貌似@DateTimeFormat 注解并没有生效?有待考证
    5. application.properties 配置开启,实体添加 @JsonFormat@DateTimeFormat 结果与第三条一样

    结论:实际项目中 application.properties设置通用时间格式,个别属性需要特殊处理时,添加@JsonFormat
    @JsonFormat 自己好像就把这件事搞定了)

    二、 使用 @ResponseBody 时 忽略 json 中值为null的属性

    1. application.properties中加入如下代码
    spring.jackson.default-property-inclusion=non-null
    

    或者在类上声明
    @JsonInclude(JsonInclude.Include.NON_NULL)

    import java.io.Serializable;
    
    import com.fasterxml.jackson.annotation.JsonInclude;
    
    @JsonInclude(JsonInclude.Include.NON_NULL)//该注解配合jackson,序列化时忽略 null属性
    public class AjaxResult implements Serializable {
    }
    

    相关文章

      网友评论

      本文标题:Spring Boot json (Date类型入参、格式化,以

      本文链接:https://www.haomeiwen.com/subject/jlamcftx.html