github地址:https://github.com/FasterXML/jackson
fasterxml官方地址:http://fasterxml.com/
?databind依赖于streaming和annotations,使用这一个就可以了
地址:https://github.com/FasterXML/jackson-databind,doc见wiki
?其他格式的也支持,只要实现了解析器和生成器
mvn仓库
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>
如果使用java8的LocalDateTime需要引入jackson-datatype-jsr310(依赖于databind)的maven,且需要使用objectMapper.findAndRegisterModules()代码注册模块。
使用
//Java对象转为JSON字符串
user = new User();
objectMapper = new ObjectMapper();
objectMapper.findAndRegisterModules(); //使用java8的localDateTime时使用,但是日期还是有问题,需要在日期的属性上加@JsonFormat(paattern = "yyyy-MM-dd HH:mm:ss")
String jsonString = objectMapper.writeValueAsString(user); //返回json字符串
//JSON字符串转为Java对象
objectMapper = new ObjectMapper();
objectMapper.findAndRegisterModules();
objectMapper.readValue(jsonString, User.class); //简单类型, 有对应的实体类, 如果有泛型会出问题,反序列化的时候会把泛型丢掉, 使用new TypeReference<复杂类型>(){}
objectMapper.readValue(jsonString, new TypeReference<List<User>>(){}); //复杂类型
//修改属性名
@JsonProperty("changedName") //在属性上加
//忽略属性
@JsonIgnore //在属性上加
@JsonIgnoreProperties({"name1", "name2"}) //在类上加
|