SpringMVC返回Json,自定义Json中Date类型格式
SpringMVC返回Json数据依赖jackson这个开源的第三方类库。
若不加任何说明情况下Date类型将以时间戳的形式转换为Json并返回。
jackson提供了一些自定义格式的方法。我们只需继承它的抽象类JsonSerializer<T> ,并在指定的属性方法上添加注解@JsonSerialize即可实现。
1.编写Date转换类(yyyy-MM-dd)
public class CustomDateSerializer extends JsonSerializer<Date> { public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)throws IOException, JsonProcessingException { SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = format.format(date); gen.writeString(formattedDate); } }
2.javabean中对应属性的get()方法添加注解
package com.easyui.model; import java.util.Date; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.springframework.format.annotation.DateTimeFormat; import com.easyui.utils.CustomDateSerializer; public class User { private Integer id; private String username; private String password; private String realname; private String sex; private Date birthday; public int getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRealname() { return realname; } public void setRealname(String realname) { this.realname = realname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @JsonSerialize(using=CustomDateSerializer.class) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
至此,就可以实现返回的JSON数据中日期格式自动转换为:yyyy-MM-dd 的格式