1、添加maven依赖
- 可行的依赖
<!-- Jackson序列化和反序列化 -->
<dependency>
<groupId>com.dianping.dpsf</groupId>
<artifactId>dpsf-net</artifactId>
<version>2.10.4.1</version>
</dependency>
在添加依赖的时候碰到过坑,下面的这两种均不行,特此记录一下:
- 第一种不行依赖❌❌❌
<properties>
<jackson_version>2.11.3</jackson_version>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson_version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson_version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson_version}</version>
</dependency>
</dependencies>
- 第二种不行依赖❌❌❌
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
2、JacksonUtils工具类编写
import com.boomsecret.domain.Person;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public final class JacksonUtils {
private JacksonUtils() {}
public final static ObjectMapper MAPPER;
static {
MAPPER = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
}
public static String serialize(Object obj) {
try {
return MAPPER.writeValueAsString(obj);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
public static Object deserialize(String jsonText, TypeReference type) {
try {
return MAPPER.readValue(jsonText, type);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static <T> T deserialize(String jsonText, Class<T> beanClass) {
try {
return MAPPER.readValue(jsonText, beanClass);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static JsonNode deserialize(String jsonText) {
try {
return MAPPER.readTree(jsonText);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
3、具体使用
package org.Jackson_;
import com.dianping.pigeon.remoting.common.codec.json.JacksonUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
/**
* @JsonIgnore 此注解用于属性上 作用是进行JSON操作时忽略该属性
* @JsonFormat 此注解用于属性上 作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
* @JsonProperty 此注解用于属性上 作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")
*/
class Person{
private int age;
@JsonProperty("myName")
private String name;
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
private Date date;
}
public class serialize {
public static void main(String[] args) {
Person person = new Person(18, "tom", new Date());
String personJson = JacksonUtils.serialize(person);
System.out.println(personJson);
Person newPerson = JacksonUtils.deserialize(personJson, Person.class);
System.out.println(newPerson);
}
}
https://www.jianshu.com/p/005255283478
https://blog.csdn.net/whq12789/article/details/109286217