Jackson-02
1.依赖
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
2.json 字符串转对象
/**
* 字符串转对象
*
* @throws Exception
*/
@Test
public void test1() throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
String carJson = "{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";
Car car = objectMapper.readValue(carJson, Car.class);
System.out.println(objectMapper.writeValueAsString(car));
}
3.对象转 json 字符串
/**
* 对象转字符串
*
* @throws Exception
*/
@Test
public void test2() throws Exception {
Car car = new Car();
car.setBrand("宝马");
car.setDoors(8);
System.out.println(new ObjectMapper().writeValueAsString(car));
}
4.二进制数组转 json 对象
/**
* 二进制数组转对象
*
* @throws Exception
*/
@Test
public void test3() throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
String carJson =
"{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";
byte[] bytes = carJson.getBytes("UTF-8");
Car car = objectMapper.readValue(bytes, Car.class);
System.out.println(objectMapper.writeValueAsString(car));
}
5.json 字符串转 list 集合
/**
* 字符串转lsit
*
* @throws Exception
*/
@Test
public void test4() throws Exception {
String jsonArray = "[{\"brand\":\"ford\"}, {\"brand\":\"Fiat\"}]";
ObjectMapper objectMapper = new ObjectMapper();
List<Car> cars = objectMapper.readValue(jsonArray, new TypeReference<List<Car>>() {
});
System.out.println(objectMapper.writeValueAsString(cars));
}
6.list 转 json 字符串
/**
* list转字符串
*
* @throws Exception
*/
@Test
public void test5() throws Exception {
List<Car> cars = new ArrayList<>();
Car car1 = new Car();
car1.setBrand("宝马");
car1.setDoors(8);
cars.add(car1);
Car car2 = new Car();
car2.setBrand("奔驰");
car2.setDoors(10);
cars.add(car2);
System.out.println(new ObjectMapper().writeValueAsString(cars));
}
7.json 字符串转 map
/**
* 字符串转map
*
* @throws Exception
*/
@Test
public void test6() throws Exception {
String jsonObject = "{\"brand\":\"ford\", \"doors\":5}";
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> jsonMap = objectMapper.readValue(jsonObject,
new TypeReference<Map<String, Object>>() {
});
System.out.println(objectMapper.writeValueAsString(jsonMap));
}
8.可见性配置
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.setVisibility(VisibilityChecker.Std.defaultInstance().withFieldVisibility(JsonAutoDetect.Visibility.ANY));
这段代码是使用 Jackson 库中的 ObjectMapper 类来配置 JSON 的反序列化行为。
-
ObjectMapper objectMapper = new ObjectMapper();
:这行代码创建了一个新的 ObjectMapper 实例,它是 Jackson 库中用于处理 JSON 的核心类。ObjectMapper 可以用来序列化(将 Java 对象转换为 JSON 字符串)和反序列化(将 JSON 字符串转换为 Java 对象)。 -
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
:这行代码调用 ObjectMapper 的disable
方法,禁用了在反序列化过程中对于未知属性的处理。通常情况下,如果 JSON 中包含 Java 对象中未定义的属性,Jackson 会抛出异常。通过禁用这个特性,可以使得 Jackson 在遇到未知属性时不会抛出异常,而是忽略它们。 -
objectMapper.setVisibility(VisibilityChecker.Std.defaultInstance().withFieldVisibility(JsonAutoDetect.Visibility.ANY));
:这行代码设置了 ObjectMapper 的可见性检查器(VisibilityChecker),并将字段的可见性设置为ANY
。这意味着 ObjectMapper 在序列化和反序列化过程中将考虑所有的字段,不论它们是否被声明为私有、受保护或公共。这样设置可以确保 ObjectMapper 能够访问到所有字段,而不仅仅是公共字段。
综合来说,这段代码的作用是创建了一个 ObjectMapper 实例,并对其进行了配置,以确保在反序列化 JSON 字符串时能够忽略未知属性,并且能够访问到所有的字段。
Jackson 是一个开源的 Java 库,用于处理 JSON 数据格式的序列化和反序列化。它被广泛认为是 Java 中最好的 JSON 解析器,也常被称为"JSON for Java"。Jackson 提供了一套数据绑定工具,能够将 Java 对象转换成 JSON 数据,或者将 JSON 数据转换成 Java 对象。此外,Jackson 还支持其他数据格式,如 XML、CSV、Avro 等
。
- 点赞
- 收藏
- 关注作者
评论(0)