Install
openclaw skills install @thcjp/json-toolkitopenclaw skills install @thcjp/json-toolkit核心功能: 本技能提供化集成场景等能力。
核心功能: 本技能提供完整的配置选项和详细的使用说明等能力。
核心功能: 本技能提供中文交互等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| JSON Schema验证与自动化校验 | 不支持 | 支持 |
| 深度漏洞扫描与CVE关联 | 不支持 | 支持 |
| 安全基线合规审计 | 不支持 | 支持 |
| 批量资产风险评分 | 不支持 | 支持 |
| 威胁情报实时订阅与告警 | 不支持 | 支持 |
| 能力 | 说明 | 免费版 | 专业版 |
|---|---|---|---|
| Schema 校验 | 不可信输入校验 | 是 | 是 |
| 命名规范 | 一致性管理 | 是 | 是 |
| 空值处理 | null 与缺失区分 | 是 | 是 |
| 日期时间 | ISO 8601 规范 | 是 | 是 |
| 数字与 ID | 大数与金额 | 是 | 是 |
| 结构优秀实践 | 嵌套与信封 | 是 | 是 |
| API 响应模式 | 错误结构化 | 是 | 是 |
| 基础序列化 | toJSON 注意事项 | 是 | 是 |
| 基础解析安全 | try/catch | 是 | 是 |
| 高级序列化 | Map/Set/BigInt/循环引用 | 否 | 是 |
| 深度解析安全 | reviver 与 BOM | 否 | 是 |
| Unicode 边界 | 代理对与控制字符 | 否 | 是 |
| 原型污染防护 | proto 与 Object.create | 否 | 是 |
| 自动化校验流水线 | 批量校验与报告 | 否 | 是 |
| 自定义 replacer/reviver | 模板化 | 否 | 是 |
| 敏感数据剥离 | 安全序列化 | 否 | 是 |
API 网关团队用自动化校验流水线批量校验所有接口的请求与响应 Schema,生成校验报告标注违规字段与位置。专业版的批量校验覆盖 50+ 接口,避免人工逐个检查.
应用需要序列化含 Map、Set、BigInt、Date 的复杂对象到 JSON 并反序列化还原。专业版的自定义 replacer 与 reviver 模板处理这些非标准类型,避免 toJSON() 默认行为带来的意外.
日志服务在序列化用户数据前剥离敏感字段(密码、token、身份证号),避免依赖消费方忽略额外字段。专业版的敏感数据剥离在序列化时完成,从源头杜绝泄露.
跨语言系统交换数据时遇到 BOM 头、控制字符、emoji 代理对导致解析失败。专业版的 Unicode 边界处理在解析前清洗这些隐患,确保跨语言兼容.
上手时间:< 60 秒。专业版提供自定义模板,建议先复用模板再定制.
// 检测循环引用后再序列化
function safeStringify(obj) {
const seen = new WeakSet();
return JSON.stringify(obj, (key, value) => {
if (typeof value === 'object' && value !== null) {
if (seen.has(value)) return '[Circular]';
seen.add(value);
}
return value;
});
}
const data = { map: new Map([['a', 1]]), big: 9007199254740993n };
JSON.stringify(data, (key, value) => {
if (value instanceof Map) return Object.fromEntries(value);
if (typeof value === 'bigint') return value.toString();
return value;
});
JSON.parse(json, (key, value) => {
if (key.endsWith('_at')) return new Date(value);
if (/^\d+n$/.test(value)) return BigInt(value.slice(0, -1));
return value;
});
function sanitizeInput(str) {
return str
.replace(/^\uFEFF/, '') // 剥离 BOM
.replace(/[\u0000-\u001F]/g, ''); // 剥离控制字符
}
JSON.parse(sanitizeInput(rawInput));
使用步骤:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 处理的内容输入 |
| mode | string | 否 | 处理模式, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"result": "处理结果",
"status": "success",
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 现象 | 可能原因 | 解决步骤 | 优先级 |
|---|---|---|---|
| 序列化报循环引用 | 对象存在循环结构 | 用 WeakSet 检测或 flatted 库 | P1 |
| Map/Set 序列化为空 | 未自定义 replacer | replacer 中转换 Map/Set | P2 |
| BigInt 报 TypeError | 未转换即序列化 | replacer 中 toString | P2 |
| 解析报 proto 污染 | 输入含危险键 | Object.create(null) 或过滤键 | P1 |
| 解析报非法字符 | BOM 或控制字符 | 剥离 BOM 与控制字符 | P2 |
| emoji 显示乱码 | 单字符而非代理对 | 用代理对表示 | P3 |
| 敏感字段泄露 | 未在序列化时剥离 | 配置 strip_fields | P1 |
| 类型丢失 | 反序列化未用 reviver | reviver 重建 Date/BigInt | P2 |
| 校验报告缺失 | fail_fast 为 true | 设为 false 汇总全部 | P3 |
| 跨语言解析失败 | Unicode 边界未处理 | 清洗 BOM 与控制字符 | P2 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由 Agent 平台内置 LLM 提供 |
| JSON Schema 校验库 | 库 | 推荐 | 各语言生态均有(如 JS 的 ajv、Python 的 jsonschema) |
| flatted(可选) | 库 | 可选 | npm install flatted 或 pip install flatted,用于循环引用 |
| 标准库 JSON 模块 | 运行时 | 必需 | 各语言标准库自带 |
# json_validation_pipeline.yaml
schemas_dir: ./schemas
endpoints:
- name: create_user
request_schema: user_create.json
response_schema: user_response.json
- name: list_orders
request_schema: order_list.json
response_schema: order_list_response.json
options:
additional_properties: false
strict_required: true
report_format: json # json / markdown / html
fail_fast: false # false 时校验全部,汇总报告
{
"strip_fields": ["password", "token", "secret", "ssn", "credit_card"],
"mask_fields": {"email": "partial", "phone": "partial"},
"depth": 5,
"throw_on_unknown": false
}
| 字符 | 问题 | 处理方式 |
|---|---|---|
BOM \uFEFF | 文件头导致解析失败 | 解析前剥离 |
| 控制字符 U+0000–U+001F | 粘贴文本含不可见字符 | 剥离或转义 |
emoji 单字符 \u1F600 | 非法代理对 | 用代理对 \uD83D\uDE00 |
嵌入式 NULL \u0000 | 截断字符串 | 剥离或拒绝 |
A:用 WeakSet 跟踪已访问对象,遇到重复时返回 [Circular] 标记而非抛出异常。或使用 flatted 等专用库处理循环结构.
A:JSON.stringify 对 Map/Set 返回 {}(空对象),数据丢失。需自定义 replacer 将 Map 转为 Object.fromEntries,Set 转为数组.
A:JSON.stringify 不支持 BigInt,直接报 TypeError。需在 replacer 中 value.toString() 转字符串,反序列化时用 reviver 还原.
A:JSON.parse('{"__proto__":{"isAdmin":true}}') 会污染 Object.prototype,导致所有对象继承 isAdmin: true。防护方式:(1) 用 Object.create(null) 创建对象;(2) 过滤 __proto__、constructor、prototype 键.
A:UTF-8 文件可能以 \uFEFF(BOM)开头,JSON.parse 会将其视为非法字符报错。解析前用 str.replace(/^\uFEFF/, '') 剥离.
A:emoji(如 😀)在 JSON 中需用代理对 \uD83D\uDE00 表示。单个 \u1F600 是非法代理对,会导致解析错误或显示乱码.
A:将校验脚本作为 CI 步骤,读取配置文件批量校验所有 Schema,校验失败时流水线红灯。建议 fail_fast: false 汇总全部违规再修复.
A:字段过滤在消费方忽略额外字段(被动);敏感字段剥离在序列化时移除(主动)。后者更安全,因为剥离后数据中根本不存在敏感字段,即使被记录日志也安全.
A:Date 对象的 toJSON() 返回 ISO 字符串(而非 Date 对象),自定义类的 toJSON() 可能改变输出结构。序列化前确认对象是否有 toJSON 方法,避免静默覆盖.
A:支持。除 JSON Schema 标准校验外,可自定义业务规则(如"金额必须为正""邮箱格式校验"),集成到自动化校验流水线.
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| JSON Schema验证 | 2小时/次 | 5分钟/次 | 1小时55分钟 | 95% |
| 深度漏洞扫描 | 4小时/次 | 30分钟/次 | 3小时30分钟 | 98% |
| 安全基线合规审计 | 8小时/次 | 2小时/次 | 6小时 | 99% |
| 批量资产风险评分 | 6小时/次 | 1小时/次 | 5小时 | 100% |
| 威胁情报实时订阅与告警 | 3小时/次 | 10分钟/次 | 2小时50分钟 | 100% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 操作便捷性 | 一键启动,自动处理 | 逐个操作,手动处理 | 编写脚本,调试运行 | 软件复杂,配置繁琐 |
| 安全性 | 高级安全机制,防止数据泄露 | 人工操作,风险较高 | 安全性较低,需手动处理 | 安全性高,但配置复杂 |
| 执行效率 | 自动化处理,快速响应 | 人工操作,效率低 | 脚本执行,效率中等 | 高效处理,但配置复杂 |
| 适应范围 | 多种场景,灵活配置 | 限于特定场景 | 通用性强,但需编写脚本 | 功能全面,但配置复杂 |
| 成本效益 | 一次性投入,长期节省 | 持续人工成本 | 脚本开发成本 | 高成本投入,但功能全面 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 数据处理效率低 | 大量数据手动处理,耗时费力 | 整个数据处理流程 | 自动化处理,提高效率 | 时间节约 50% |
| 安全风险高 | 数据处理过程中存在泄露风险 | 整个数据处理流程 | 高级安全机制,防止数据泄露 | 安全风险降低 90% |
| 配置复杂 | 需要手动配置,操作繁琐 | 整个使用流程 | 灵活配置,简化操作 | 操作简便性提升 70% |
A1: 全功能 JSON 处理。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。
针对JSON工具箱(专业版)使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
针对JSON工具箱(专业版)使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |