引入
ts
import { safeJsonParse, parseLooseJson } from 't-comm';
// 不支持 tree-shaking 的项目
import { safeJsonParse, parseLooseJson} from 't-comm/lib/json/index';
// 只支持 ESM 的项目
import { safeJsonParse, parseLooseJson} from 't-comm/es/json/index';safeJsonParse(data, defaultValue)
描述:加了 try-catch 的 JSON.parse
参数:
| 参数名 | 描述 |
|---|---|
| data | 传入数据 |
| defaultValue | 默认值,不传则为 空对象 |
返回: 解析后的数据
示例
ts
safeJsonParse(data)
safeJsonParse(data, {})
safeJsonParse(data, [])parseLooseJson(content, logTag)
描述:通用 LLM 输出 JSON 容错解析 用于解析大语言模型(AI Agent)输出的 JSON:通常 LLM 输出的内容有以下几种 "脏" 情况:
- - 直接就是合法 JSON - JSON 被自然语言包围("好的,下面是 JSON: { ... } 谢谢") - JSON 被 markdown 代码块包裹(`json { ... } `) - 因 token 上限被截断(缺少闭合的 ] 和 })
参数:
| 参数名 | 描述 |
|---|---|
| content | LLM 返回的原始字符串 |
| logTag | 策略 5 触发时的日志前缀(默认 [AI]),便于上层区分调用方 |
示例
ts
const result = parseLooseJson<{ name: string }>(aiResponseText);
if (result) console.log(result.name);