json和接口对象的格式问题

在处理包含时间属性的对象时,JSON转换可能会遇到问题。文章提出了三种解决方案:1)使用格式化的日期时间字符串,如2023-04-21T15:31:42.000+0800;2)使用时间戳表示,如1682321792034;3)在Date属性上添加@JsonFormat注解,指定日期时间格式和时区,或者改用Java8的LocalDateTime避免时区问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般来说我们在创建对象时会有一些时间方面的属性,比如以下对象

@Data
public class User {
    private String id;
    private Date expiredTime;
}

通过json传递可能会有些时间方面的问题,比如启动服务后使用postman工具测试接口

有以下几个解决方法:

1、json里的时间属性用格式化的日期时间

例如:2023年4月21日15点31分42秒000毫秒

{
    "id":"123",
    "expiredTime":"2023-04-21T15:31:42.000+0800"
}

2、json里的时间属性用时间戳

{
    "id":"123",
    "expiredTime":"1682321792034"
}

3、在对象的属性上添加注解@JsonFormat

@Data
public class User {
    private String id;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date expiredTime;
}

ps:属性timezone = "GMT+8" 是因为Date会有时区的问题,比我们时区的时间少了8小时,如果不想加timezone,可以将Date换成java8的新时间类型LocalDateTime,如下:

@Data
public class User {
    private String id;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expiredTime;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值