/** * 安全解析后端 JSON 字段 * * dashboard 的 JSON 列(s2_features、s1_faq_categories、options_json 等) * 经 Drizzle ORM 返回时可能是字符串或已解析对象,统一转为对象数组。 */ export function parseJson(value: string | T | null | undefined, fallback: T): T { if (value == null) return fallback; if (typeof value !== 'string') return value as T; try { const parsed = JSON.parse(value) as T; return parsed; } catch { return fallback; } }