📜  Jackson-环境设置(1)

📅  最后修改于: 2023-12-03 15:15:54.113000             🧑  作者: Mango

Jackson-环境设置

什么是Jackson?

Jackson是一个功能强大的Java库,用于将 Java对象转换为JSON格式(序列化)和JSON格式转换为 Java对象(反序列化)。Jackson提供了四个核心接口实现JSON处理:

  • ObjectMapper:是Jackson 序列化与反序列化的核心API,也是最常使用的API。
  • ObjectReader:是更具有语义的配置, 只能进行反序列化操作,不能进行序列化操作。
  • ObjectWriter: 这是相对ObjectReader 的另一面,用于配置对JSON的序列化操作。
  • JsonNode:Jackson 的树模型解析器,包括要封装的JsonNode对象和其它实用方法,如:获得JSON节点、遍历JSON节点等。
安装Jackson

Jackson可以通过Maven或Gradle添加依赖,以下是Maven项目添加依赖的示例:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>
配置Jackson
配置ObjectMapper
  1. 创建ObjectMapper对象
ObjectMapper mapper = new ObjectMapper();
  1. 配置ObjectMapper属性
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 不抛出未知属性异常

mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // 不抛出空对象异常

// 设置时间格式
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

// 设置序列化的方式
mapper.enable(SerializationFeature.INDENT_OUTPUT);

// 设置反序列化的方式
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
配置ObjectReader
  1. 创建ObjectReader对象
ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.readerFor(MyObject.class);
  1. 配置ObjectReader属性
reader.with(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); // 当单值作为数组时也能反序列化

reader.with(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS); // 去掉数组外层的中括号

reader.with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT); // 当空字符串作为值时认为是null

// 配置根据属性名反序列化
reader.with(DeserializationFeature.UNWRAP_ROOT_VALUE);
reader.withRootName("root");
配置ObjectWriter
  1. 创建ObjectWriter对象
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writerFor(MyObject.class);
  1. 配置ObjectWriter属性
writer.with(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 以时间戳形式输出时间格式

writer.with(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS); // 按照key的字母顺序输出map

writer.with(SerializationFeature.INDENT_OUTPUT); // 输出格式化后的json

writer.withRootName("root"); // 设置根节点名称
使用Jackson
序列化

使用ObjectMapper将Java对象序列化为JSON字符串:

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(myObject);
反序列化

使用ObjectMapper将JSON字符串反序列化为Java对象:

ObjectMapper mapper = new ObjectMapper();
MyObject myObject = mapper.readValue(json, MyObject.class);
批量反序列化
ObjectMapper mapper = new ObjectMapper();
JavaType type = mapper.getTypeFactory().constructParametricType(List.class, MyObject.class);
List<MyObject> list = mapper.readValue(json, type);
总结

本文介绍了Jackson的安装、配置和使用方法,使您能够更好地掌握Jackson进行Java对象与JSON格式的转换。