Jackson

创建日期:2024-06-21
更新日期:2024-12-18

项目首页: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);