概述

JsonUtils 是JSON序列化和反序列化的核心工具类,基于Jackson库实现。主要功能是实现Java对象与JSON字符串之间的双向转换,在API通信中用于处理请求参数和响应数据的序列化转换。

代码实例

import com.fasterxml.jackson.databind.ObjectMapper;
import java.nio.charset.StandardCharsets;

/**
 * JSON序列化/反序列化工具类
 * <p>
 * 提供Java对象与JSON字符串之间的转换功能,
 * 使用Jackson库实现高效稳定的序列化操作。
 */
public class JsonUtils {
    // 全局共享的ObjectMapper实例
    private static final ObjectMapper mapper = new ObjectMapper();

    static {
        // 配置忽略未知字段
        mapper.configure(
            com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
            false
        );
    }

    /**
     * 对象序列化为JSON字符串
     *
     * @param object 需要序列化的Java对象
     * @return JSON格式字符串
     *
     * 使用场景:将业务参数对象转换为JSON字符串,
     *          准备后续加密操作。
     *
     * 示例:
     * Map<String, Object> params = new HashMap<>();
     * params.put("key", "value");
     * String json = JsonUtils.toJson(params);
     */
    public static String toJson(Object object) throws Exception {
        return mapper.writeValueAsString(object);
    }

    /**
     * JSON字符串反序列化为对象
     *
     * @param json JSON格式字符串
     * @param clazz 目标对象的类
     * @return 反序列化后的Java对象
     *
     * 使用场景:将解密后的JSON数据转换为业务对象,
     *          提取服务端返回的数据内容。
     *
     * 示例:
     * AddressVO address = JsonUtils.fromJson(
     *     jsonData,
     *     AddressVO.class
     * );
     */
    public static <T> T fromJson(String json, Class<T> clazz) throws Exception {
        return mapper.readValue(
            json.getBytes(StandardCharsets.UTF_8),
            clazz
        );
    }
}