项目首页:https://github.com/FasterXML/jackson
参考文档:https://blog.csdn.net/promsing/article/details/114986873
maven仓库:https://mvnrepository.com/artifact/com.fasterxml.jackson
jackson-core: https://github.com/FasterXML/jackson-core
jackson-databind:https://github.com/FasterXML/jackson-databind
依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>
注解
@JsonProperty:设置映射字段
@JsonIgnore:忽略属性
@JsonFormat:时间格式化
功能
1、对象和JSON互相转换。
模型:
@Data
public class Person {
private String name;
private int age;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
@JsonIgnore
private String idCard;
}
对象转json:
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(person);
json转对象:
Person person2 = mapper.readValue(s, Person.class);
MyValue value = mapper.readValue(new File("data.json"), MyValue.class);
value = mapper.readValue(new URL("http:~/~/some.com/api/entry.json"), MyValue.class);
value = mapper.readValue("{\"name\":\"Bob\", \"age\":13}", MyValue.class);
2、 json与常用类型互相转换。
Map<String, Integer> scoreByName = mapper.readValue(jsonSource, Map.class);
List<String> names = mapper.readValue(jsonSource, List.class);
mapper.writeValue(new File("names.json"), names);
3、 json与泛型互相转换。
Map<String, ResultValue> results = mapper.readValue(jsonSource,
new TypeReference<Map<String, ResultValue>>() { } );
4、 json转树形结构。
ObjectNode root = mapper.readTree("stuff.json");
String name = root.get("name").asText();
int age = root.get("age").asInt();
root.with("other").put("type", "student");
String json = mapper.writeValueAsString(root);