package com.nbport.zgwl.manifest.utils;

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

import java.util.Collections;
import java.util.List;

/**
 * 模板管理 JSON 工具
 *
 * 模板的“发布范围、变量映射”等字段更适合存成 JSON 文本。
 * 这里统一做转换，避免 Service 里反复写解析代码。
 */
public final class ManifestJsonUtils {

    private ManifestJsonUtils() {
    }

    /** 对象转 JSON 字符串 */
    public static String toJson(Object value) {
        if (value == null) {
            return null;
        }
        return JSON.toJSONString(value);
    }

    /** 解析 String List 类型的 JSON */
    public static List<String> parseStringList(String json) {
        if (json == null || json.isBlank()) {
            return Collections.emptyList();
        }
        return JSON.parseObject(json, new TypeReference<List<String>>() {
        });
    }

    /** 泛型解析 JSON 为 List */
    public static <T> List<T> parseList(String json, TypeReference<List<T>> typeReference) {
        if (json == null || json.isBlank()) {
            return Collections.emptyList();
        }
        return JSON.parseObject(json, typeReference);
    }
}
