Skip to content

使用jackson,导入包

xml
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.16.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.16.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.16.0</version>
</dependency>

序列化

java
//创建jackson核心操作对象ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//将java对象转json格式字符串
String frindStr = mapper.writeValueAsString(对象);

反序列化

java
//创建jackson核心操作对象ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//将json格式字符串转java对象
对象 对象名 = mapper.readValue(JSON字符串,对象.class);

复杂反序列化

一些MapList集合等进行反序列化时需要在其中写入new TypeReference<T>

java
Map<String, Object> map2 = mapper.readValue(text, new TypeReference<Map<String, Object>>(){});

获取序列化后的内容

序列化后使用 mapper.readTree(String)得到JsonNode对象,然后通过其内的get(String | int).asText()获取字符串数据

方法说明
asText()获取字符串
asInt()获取整形
asBoolean()获取布尔型
asDouble()获取浮点型

注解

注解说明
@JsonIgnore注解用于排除某个属性,这样该属性就不会被Jackson序列化和反序列化。(作用在属性上)
@JsonIgnoreProperties注解是类注解。在序列化为JSON的时候,@JsonIgnoreProperties({"prop1", "prop2"})会忽略其内设置的属性;在从JSON反序列化为Java类的时候,@JsonIgnoreProperties(ignoreUnknown=true)会忽略所有没有Getter和Setter的属性。该注解在Java类和JSON不完全匹配的时候很有用(作用在类上)
@JsonIgnoreType会排除所有指定类型的属性。(作用在类上)
@JsonFormat属性值格式化 例如:@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GTM+8")(作用在属性上)
@JsonProperty为实体类属性取别名(作用在属性上)