date: 2018/10/18
简介
是用来序列化和反序列化的java框架,是最流行的 json 解析器之一 。
优势
- 依赖的jar包少
- 解析大的 json 文件速度比较快
- 运行时占用内存比较低,性能比较好
- 有灵活的API,可以很容易进行扩展和定制
使用
1. 添加pom.xaml配置
<dependency>
//核心包:高性能的流模式来生成和解析json
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
//数据绑定
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
//注解包,提供标准注解功能
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
//高阶:处理时间格式
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
2. 常用注解
@JsonProperty : 属性转换
@JsonProperty("对应json")
private Date birthDate;
@JsonFormat :在序列化时转化成指定格式
//用于返回前端的数据格式
@JsonFormat(pattern = "yyyy-MM-dd")
private String createTime;
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate startTime;
@JsonIgnore: 展示时不显示
@JsonIgnore
private int deleted;
高阶:@JsonDeserialize
@JsonDeserialize(using = UnixTimestampDeserializer.class)
private LocalDateTime displayTime;
3. 通过注解方式使用
使用:
@Autowired
private ObjectMapper objectMapper;
//Xx x = objectMapper.readValue(json, xx.class);
TaobaoJsonDataDto taobaoJsonDataDto = objectMapper.readValue(jsonString, TaobaoJsonDataDto.class);
entity:由于可能只是需要json数据的一部分,可以定义一个内部类
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TaobaoJsonDataDto implements Serializable {
private static final long serialVersionUID = 6445264713838158675L;
private TaobaoModsDto mods;
//get/set/toString
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class TaobaoModsDto implements Serializable {
private static final long serialVersionUID = 6445264713838158675L;
private TaobaoItemListDto itemlist;
private TaobaoPagerDto pager;
//get/set/toString
}
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class TaobaoItemListDto implements Serializable {
private static final long serialVersionUID = 6445264713838158675L;
private TaobaoSearchItemDto data;
//get/set/toString
}
}