JsonSerialize

SpringMVC Json自定义序列化和反序列化

我的梦境 提交于 2021-01-28 21:40:44
需求背景 需求一:SpringMVC构建的微服务系统,数据库对日期的存储是Long类型的时间戳,前端之前是默认使用Long类型时间,现在前端框架改动,要求后端响应数据时,Long类型的时间自动变成标准时间格式(yyyy-MM-dd HH:mm:ss)。 涉及到这个转换的范围挺大,所有的实体表都有创建时间createTime和修改时间updateTime,目前的主要诉求也是针对这两个字段,并且在实体详情数据和列表数据都存在,需要一个统一的方法,对这两个字段进行处理。 需求二:前端请求上传的JSON报文,String类型的内容,可能会出现前后有空格的现象,如果前端框架未对此问题进行处理,后端收到的JSON请求反序列化为对象时,就会出现String类型的值,前后有空格,现需要一个统一的处理方法,对接收的String类型属性执行trim方法。 解决方案 SpringMVC默认的JSON框架为jackson,也可以使用fastjson。 jackson框架 自定义序列化 如果项目使用jackson框架做json序列化,推荐的方案是使用@JsonSerialize注解,示例代码如下: @JsonSerialize(using = CustomDateSerializer.class) private Long createTime; @JsonSerialize(using =

jpa表映射实体

流过昼夜 提交于 2020-08-15 08:41:51
jpa 定义实体(和数据库表和字段映射) @Entity @Table( name = "nb" ) @DynamicInsert @DynamicUpdate public class Nb { @Id @GeneratedValue( strategy = GenerationType.IDENTITY ) @JoinColumn( name = "NB_ID", unique = true ) private Integer nbId; @Column( name = "IMEL" ) private String imei; @Column( name ="DEVICE_ID" ) private String deviceId; @Column( name ="METER_UID" ) private String meterUid; @Column( name ="CREATE_TIME" ) @Temporal(TemporalType.TIMESTAMP) @JsonSerialize( using = JsonDateTimeSerializer.class ) private Date createTime = new Date(); public NB(){} } 来源: oschina 链接: https://my.oschina.net

SpringMVC返回JSON数据时日期格式化问题

試著忘記壹切 提交于 2020-05-04 08:01:02
https://dannywei.iteye.com/blog/2022929 SpringMVC返回JSON数据时日期格式化问题 博客分类: Spring 在运用SpringMVC框架开发时,可以直接在方法上添加注解 @ResponseBody 返回JSON数据,如果javabean的属性中包含 Date日期类型的数据,默认的转换格式并不是我们想要的 yyyy-MM-dd HH:mm:ss这样的格式,那又如何实现这样的格式转化呢? 测试环境 SpringMVC 3.2.0 Jackson 1.7.1 解决方案 其实SpringMVC的JSON转换方法是利用了 Jackson 这个开源的第三方类库,它提供了一些自定义格式的方法。只要我们继承它的抽象类:public abstract class JsonSerializer<T>,并在相应的属性方法上添加指定注解:@JsonSerialize 即可实现。 编写Date日志自定义转换类: CustomDateSerializer.java Java代码 import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org

Springboot2.x+shiro+redis(Lettuce)整合填坑

做~自己de王妃 提交于 2020-04-25 13:35:24
主要记录关键和有坑的地方 前提: 1、SpringBoot+shiro已经集成完毕,如果没有集成,先查阅之前的 Springboot2.0 集成shiro权限管理 2、redis已经安装完成 3、redis客户端使用Lettuce,这也是sprinboot2.0后默认的,与jedis的区别,自行百度 4、json使用springboot默认的 一、依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>     //在用使用shiro的情况下集成redis,可以带这个依赖,shiro-redis已经实现了shiro的redis缓存和session管理     //如果shiro和redis集成但是不交互,可以不引入,可以自定义 <dependency> <groupId>org.crazycake</groupId> <artifactId

Spring Boot + JSON 处理

大城市里の小女人 提交于 2019-12-30 00:57:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Spring Boot 之使用 Json 详解 1. 前台不显示属性的空值:NULL 类上增加注解:@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) 2. 前后台显示属性名称不一致 属性增加注解: @JsonProperty("myName") 3. 注解:不显示属性 com.fasterxml.jackson.annotation.JsonIgnore OR @JSONField(serialize = false)>来自com.alibaba.fastjson.annotation 4. pom.xml增加 <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> </dependency> 来源: oschina 链接: https://my.oschina.net/u/248712/blog/3055599