📅  最后修改于: 2023-12-03 15:15:54.113000             🧑  作者: Mango
Jackson是一个功能强大的Java库,用于将 Java对象转换为JSON格式(序列化)和JSON格式转换为 Java对象(反序列化)。Jackson提供了四个核心接口实现JSON处理:
Jackson可以通过Maven或Gradle添加依赖,以下是Maven项目添加依赖的示例:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
ObjectMapper mapper = new 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);
ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.readerFor(MyObject.class);
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");
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writerFor(MyObject.class);
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"); // 设置根节点名称
使用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格式的转换。