不会自动转换string与date

主要是这个意思,前端提交的JSON里,日期是一个字符串,而对应后端的实体里,它是一个Date的日期,这两个在默认情况下是不能自动转换的,我们先看一下实体

实体

public class UserDTO {

private String name;

private String email;

private Boolean sex;

private Double total;

private BigDecimal totalMoney;

private Date birthday;

}

客户端提交的json对象

{

"email": null,

"name": "lr",

"total":3,

"totalMoney":1,

"birthday":"1983-03-18"

}

服务端收到的实体DTO是正常的

而在服务端响应的结果却不是日期,而是一个时间戳

{

"name": "lr",

"email": null,

"sex": null,

"total": "3.00",

"totalMoney": 0.0000,

"birthday": 416793600000

}

我们看到日期型的birthday在响应到前端还是一个时间戳,如果我们希望响应到前端是一个日期,那需要为这个DTO实体添加JsonFormat注解

public class UserDTO {

private String name;

private String email;

private Boolean sex;

private Double total;

private BigDecimal totalMoney;

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

private Date birthday;

}

也可以通过配置文件进行设置

spring:

jackson.date-format: yyyy-MM-dd

jackson.time-zone: GMT+8

jackson.serialization.write-dates-as-timestamps: false

这样,在服务端向前端响应结果就变成了

使用configureMessageConverters方法全局处理

springboot2.x可以实现WebMvcConfigurer 接口,然后重写configureMessageConverters来达到定制化日期序列化的格式:

Configuration

@EnableWebMvc //覆盖默认的配置

public class WebMvcConfigurerImpl implements WebMvcConfigurer {

@Override

public void configureMessageConverters(List> converters) {

MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();

ObjectMapper objectMapper = new ObjectMapper();

// 时间格式化

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));//只能是一个日期格式化,多个会复盖

}

}

如上图所示,如果希望为getup字段添加时分秒,需要在DTO上使用@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")注解即可。

java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题相关推荐

  1. Java判断一个字符串中是否包含中文字符工具类

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...

  2. java entity转dto_java 使用反射在dto和entity 实体类之间进行转换

    public class Utils { /** * 将dto和entity之间的属性互相转换,dto中属性一般为String等基本类型, * 但是entity中可能有复合主键等复杂类型,需要注意同名 ...

  3. Java中操作字符串的工具类-判空、截取、格式化、转换驼峰、转集合和list、是否包含

    场景 某些常用的对字符串进行处理的方法抽离出来成工具类,方便在多处应用. 常用的操作为: 判断是否为空 截取字符串 格式化文本 字符串转set 字符串转list 下划线转驼峰命名 是否包含字符串 注: ...

  4. Java给定一个字符串数组,判断每个字符出现次数

    题目要求:给定一个字符串,判断每个字符出现多少次? 解决思路:利用Map的特性:即Map集合中如果两个key(键)值是一样相同的,那么,后放(put)入的值会将前面存在的value(值)替换掉,也就是 ...

  5. java截取指定字符串中的某段字符

    利用字符串的substring函数来进行截取. 其中,substring函数有两个参数: 1.第一个参数是开始截取的字符位置.(从0开始) 2.第二个参数是结束字符的位置+1.(从0开始) index ...

  6. [java] 找出字符串中出现最多的字符和出现的次数

    逛园子看到一童鞋做的华为上机题目,写来好长的代码,懒得看,感觉不可能这么难,于是动手敲了下. import java.util.Scanner;public class StringTest {/** ...

  7. java indexof 通配符,字符串与含有通配符‘*’的字符串匹配(非正则表达式)

    顺利找到工作之后,每天勤勤恳恳的上班中... 项目需要搜索含有通配符的文件名的文件,*号表示任意多字符.这里应该只处理英文. 如此简单的要求,还是不要用正则表达式,一是简单,而是正则表达式感觉杀鸡用了 ...

  8. Java中截取字符串中小数点前面的字符

    1.通过下标获取 String number = "2563.2154";int index = number.indexOf(".");String intN ...

  9. 在java中除去字符串(String)中的换行字符(\r \n \t)

    我们先来看几个例子: 例1: public class Test { public static void main(String[] args) { String s = "'sds gd ...

最新文章

  1. JQuery EasyUi控件值的获取与设置
  2. 提高 Java 代码质量
  3. 数据结构-求一个字符串中的某个子串(C语言)
  4. 在SpringBoot中使用redis实现分布式锁
  5. Linux设备驱动开发概述
  6. Unbuntu 下安装node 环境
  7. Scrum 项目4.0--软件工程
  8. 用RAII技术管理资源及其泛型实现
  9. swift入门之TableView
  10. eventfd-aio-test.c
  11. python Raw I/O
  12. 子级Repeater获取 父级Repeater 中的值
  13. office2007每次打开都配置进度_每次打开excel2007都要配置进度怎么办?
  14. 985研究生被小公司领导留了3年,【全栈最全Java框架总结
  15. TNF8SLNO 华为OSN1800全新4路STM-16/8路STM-4/8路STM-1业务板
  16. 2017 EC-Final A Chat Grou
  17. 使用 Exact Audio Copy 抓取 CD 音轨保存为 FLAC 格式并填入元数据。
  18. 进程的切换——switch_to函数
  19. 计算机领域中的CAE,CAE
  20. [蓝桥杯]连号区间数[题目详解]

热门文章

  1. Cloud一分钟 | 华为云、腾讯云、阿里云中标「央视2018年租赁公有云服务」项目...
  2. 与Serverless 的第一次亲密接触
  3. dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片
  4. html代码style图片width,HTML Style columnWidth用法及代码示例
  5. java 快速读文件_java快速读取文件
  6. Zookeeper UI管理界面安装
  7. (vue基础试炼_05)简单组件之间的传值
  8. 04_SSM整合ActiveMQ支持多种类型消息
  9. 加密相关(对称加密、非对称加密、信息摘要、数字签名、CA数字证书)
  10. AOP+自定义注解 实现service统一的异常信息处理