Jackson介绍
Jackson 是一个非常流行的 Java JSON 处理库,它能够将 Java 对象与 JSON 字符串相互转换。
Jackson 工具主要用于将请求的参数(例如前端发送的 JSON 数据)和响应的数据(例如后端返回给前端的数据)转换成 Java 对象,或者将 Java 对象转换为 JSON 格式的字符串。
使用示例
出参转为 JSON:
出参是指从后端(服务器端)返回给前端(客户端)数据时,数据通常是 Java 对象,Jackson 可以将这些 Java 对象转化为 JSON 格式的字符串,然后发送到前端。
例如,后端返回一个用户信息对象(User),通过 Jackson 将该对象转换为 JSON 字符串发送给前端:
public class User {private String name;private int age;
}@RestController
public class UserController {@GetMapping("/user")public User getUser() {return new User("John", 25); // 返回 User 对象}
}
Jackson 会将 User 对象转化为如下 JSON 格式的数据:
{"name": "John","age": 25
}
入参转为 Java 对象:
入参是指从前端传递到后端的 JSON 数据。前端通常以 JSON 格式传递数据(如 POST 请求),后端接收时会将这些 JSON 数据转换为相应的 Java 对象,以便进行后续的处理。
例如,前端传递一个 JSON 数据来创建一个新的用户,后端接收到 JSON 数据后,Jackson 会将其转换为 User 对象。
前端发送的请求:
{"name": "Alice","age": 30
}
后端的接收代码:
@PostMapping("/user")
public User createUser(@RequestBody User user) {return user; // 通过 Jackson 自动将 JSON 转换成 User 对象
}
在此例中,Jackson 会自动将 JSON 数据 { “name”: “Alice”, “age”: 30 } 转换为一个 User 对象。
使用方法
在需要的项目里添加依赖:
<!-- Jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.2</version> <!--按照自己需要的版本来--></dependency>
使用
public class Example {public static void main(String[] args) throws Exception {ObjectMapper objectMapper = new ObjectMapper();SomeObject obj = new SomeObject();String jsonString = objectMapper.writeValueAsString(obj);System.out.println(jsonString);}
}
ObjectMapper 是 Jackson 库中的一个核心类,它位于 com.fasterxml.jackson.databind 包中。
Jackson 是一个流行的 Java 库,用于处理 JSON 数据。它提供了将 Java 对象转换为 JSON 字符串(序列化)和将 JSON 字符串转换为 Java 对象(反序列化)等功能。
在使用的时候可以直接通过以上这种方法创建ObjectMapper实例来使用,也可以自己创建工具类:
@Slf4j
public class JsonUtil {private static final ObjectMapper INSTANCE = new ObjectMapper();// 将对象转换为 JSON 字符串public static String toJsonString(Object obj) {try {return INSTANCE.writeValueAsString(obj); // 使用 Jackson 库的 ObjectMapper 将对象转为 JSON 字符串} catch (JsonProcessingException e) {return obj.toString(); // 如果发生异常,返回对象的 toString}}
}
虽然不一定非得使用 JsonUtil 类,但它作为工具类有如下优点:
封装和复用:将 JSON 处理逻辑封装到一个单独的工具类中,避免在项目的多个地方重复写 ObjectMapper 的代码。如果项目中多次用到 JSON 转换,统一使用 JsonUtil 可以提高代码的可维护性和复用性。
异常处理:在 JsonUtil 类中,可以针对 JSON 序列化过程中的异常做统一的处理,比如返回对象的 toString 方法,避免直接抛出异常或中断程序执行。
日志记录的封装:如果需要为 JSON 转换添加额外的日志功能或者其他操作,统一在 JsonUtil 中修改即可,可以避免在其他地方修改代码。