让jackson支持jdk8的日期类型LocalDate
2017-04-23 00:00
316 查看
jackson-databind包默认不支持jdk8新的日期类型LocalDate。该问题处理方式如下:
添加maven依赖包
代码例子
参考
https://github.com/FasterXML/jackson-modules-java8
http://stackoverflow.com/questions/31896650/serialization-of-java-8-zoneddatetime-with-jackson-and-javatimemodule
http://stackoverflow.com/questions/27952472/serialize-deserialize-java-8-java-time-with-jackson-json-mapper
添加maven依赖包
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-parameter-names</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> <version>2.8.8</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.8.8</version> </dependency>
代码例子
package com.fasterxml.jackson; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; import org.junit.Assert; import org.junit.Test; import java.io.IOException; import java.time.LocalDate; public class JacksonTest { @Test public void test() throws IOException { ClassA a = new ClassA(); a.setName("name1"); a.setLocalDate(LocalDate.now()); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new ParameterNamesModule()) .registerModule(new Jdk8Module()) .registerModule(new JavaTimeModule()); String json = mapper.writeValueAsString(a); System.out.println(json); ClassA a2 = mapper.readValue(json, ClassA.class); Assert.assertEquals(a.getName(), a2.getName()); Assert.assertEquals(a.getLocalDate(), a2.getLocalDate()); } static class ClassA { private String name; @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate localDate; public LocalDate getLocalDate() { return localDate; } public void setLocalDate(LocalDate localDate) { this.localDate = localDate; } public String getName() { return name; } public void setName(String name) { this.name = name; } } }
参考
https://github.com/FasterXML/jackson-modules-java8
http://stackoverflow.com/questions/31896650/serialization-of-java-8-zoneddatetime-with-jackson-and-javatimemodule
http://stackoverflow.com/questions/27952472/serialize-deserialize-java-8-java-time-with-jackson-json-mapper
相关文章推荐
- mysql所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。
- 发布首款支持Shift/Ctrl多选的国产日历控件,界面仿Twitter风格,支持中文日期类型,支持SImpleDateFormat格式,支持change等自定义事件,全中文注释和API,欢迎支持
- java8 LocalDate 类型 json 解析 日期格式处理
- Java 使用jdk8的新特性LocalDate和LocalDateTime 实现当前时间,日期加减,是否闰年,时间戳,时间线程每秒改变一次
- 发布首款支持Shift/Ctrl多选的国产日历控件,界面仿Twitter风格,支持中文日期类型,支持SImpleDateFormat格式,支持change等自定义事件,全中文注释和API,欢迎支持
- spring-boot 接口请求之Date、LocalDate、LocalDateTime日期类型转换处理
- jackson 枚举/日期 date enum json 解析类型 返回数字 或者自定义文字
- Android中ksoap实现SOAP远程调用,支持字符串、数值、日期类型参数
- asp.net提示使用的 SQL Server 版本不支持数据类型“date”的解决办法:
- 对日期类型的校验不能使用simpleDateFormat的原因
- Oracle存储过程传参,参数使用date日期类型的参数,返回结果集
- SimpleDateFormat 原来支持自动转换日期顺延
- 日期在String和Date类型转换;ParsePosition,formatter.parse,java.sql.Timestamp
- JAVA将十位时间戳格式化为日期Date类型
- JAVA将十位时间戳格式化为日期Date类型
- JAVA将十位时间戳格式化为日期Date类型
- Mysql日期时间类型(DATE,DATETIME,TIMESTAMP)和函数及与linux系统时间之间的转换(UNIX_TIMESTAMP、FROM_UNIXTIME)
- spring mvc 将页面string类型日期转换为后台Date日期
- mysql数据库的Date类型日期存储问题
- 使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型