package com.qdb.sdk.util;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;

import java.util.List;

/**
 * JSON 工具类
 * <p>
 * 基于 FastJson2 提供 JSON 序列化与反序列化封装。
 * </p>
 *
 * @author qdb-sdk
 * @version 1.0.0
 */
public class JsonUtil {

    private JsonUtil() {
    }

    /**
     * 将对象序列化为 JSON 字符串
     *
     * @param object 待序列化对象
     * @return JSON 字符串
     */
    public static String toJsonString(Object object) {
        return JSON.toJSONString(object);
    }

    /**
     * 将 JSON 字符串解析为指定类型对象
     *
     * @param text  JSON 字符串
     * @param clazz 目标类型
     * @param <T>   泛型类型
     * @return 解析后的对象
     */
    public static <T> T parseObject(String text, Class<T> clazz) {
        return JSON.parseObject(text, clazz);
    }

    /**
     * 将 JSON 字符串解析为泛型类型对象（支持嵌套泛型）
     *
     * @param text          JSON 字符串
     * @param typeReference 类型引用
     * @param <T>          泛型类型
     * @return 解析后的对象
     */
    public static <T> T parseObject(String text, TypeReference<T> typeReference) {
        return JSON.parseObject(text, typeReference);
    }

    /**
     * 将 JSON 字符串解析为指定类型的 List
     *
     * @param text  JSON 字符串
     * @param clazz 元素类型
     * @param <T>   泛型类型
     * @return 解析后的 List
     */
    public static <T> List<T> parseArray(String text, Class<T> clazz) {
        return JSON.parseArray(text, clazz);
    }
}
