Bootstrap

Jackson:Java对象和JSON字符串的转换处理库使用指南

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 中修改即可,可以避免在其他地方修改代码。

;