名称:json-validator 描述:验证、格式化及修复JSON数据。当您需要处理需要验证或格式化的JSON文件、API响应或配置文件时,请使用此技能。
JSON验证器
验证、格式化及修复JSON数据,并提供有用的错误信息和修复建议。
何时使用此技能
当您需要时使用此技能:
- 验证JSON语法和结构
- 格式化/美化JSON数据
- 修复常见的JSON错误
- 在JSON与其他格式之间进行转换
- 分析JSON结构
验证
验证JSON时:
- 检查语法:识别带行号的语法错误
- 提供上下文:显示问题部分
- 建议修复:提供具体的修正建议
- 解释问题:描述错误内容及原因
需要检查的常见JSON错误
- 缺失或多余的逗号
- 未闭合的括号/大括号
- 未加引号的键名
- 尾随逗号(在严格JSON中无效)
- 使用单引号而非双引号
- 注释(JSON中不允许)
- Undefined/NaN/Infinity值
验证输出示例
❌ JSON验证失败
第5行:最后一个对象属性后的尾随逗号
"name": "example",
"value": 123, ← 删除此逗号
}
✅ 建议修复:
{
"name": "example",
"value": 123
}
格式化
格式化JSON时:
- 使用2空格缩进(标准)
- 按键名字母顺序排序(可选,需询问用户)
- 删除不必要的空白字符
- 确保结构一致
示例
输入(压缩格式):
{"name":"test","items":[1,2,3],"active":true}
输出(格式化后):
{
"name": "test",
"items": [
1,
2,
3
],
"active": true
}
修复常见问题
尾随逗号
// ❌ 无效
{
"key": "value",
}
// ✅ 已修复
{
"key": "value"
}
单引号
// ❌ 无效
{'key': 'value'}
// ✅ 已修复
{"key": "value"}
未加引号的键名
// ❌ 无效
{key: "value"}
// ✅ 已修复
{"key": "value"}
注释
// ❌ 无效
{
// 这是一个注释
"key": "value"
}
// ✅ 已修复
{
"key": "value"
}
转换
在JSON与其他格式之间转换时:
从JSON转换为其他格式
- YAML:保留结构,使用适当的缩进
- TOML:适当处理嵌套对象
- CSV:必要时扁平化结构,处理数组
- XML:选择合适的标签名
从其他格式转换为JSON
- 确保正确转义
- 验证结果
- 保持数据类型(字符串、数字、布尔值、null)
分析
分析JSON结构时:
-
报告模式:
- 顶层类型(对象/数组)
- 键名和类型
- 嵌套深度
- 数组大小
-
识别模式:
- 重复结构
- 可选字段
- 使用的数据类型
-
建议改进:
- 命名不一致
- 深层嵌套问题
- 大型数组优化
分析示例
JSON结构分析:
类型:对象
键数:3(name、items、metadata)
模式:
{
"name": 字符串,
"items": 数字数组[3],
"metadata": {
"created": 字符串,
"updated": 字符串
}
}
深度:2层
总大小:约150字节
最佳实践
- 格式化前始终验证 - 不要格式化无效的JSON
- 显示清晰的错误信息 - 包含行号和上下文
- 保留数据类型 - 不要不必要地将数字转换为字符串
- 处理边缘情况 - 空对象、null值、Unicode字符
- 重大更改前询问 - 例如,排序键、删除注释
示例
示例1:验证并修复
用户请求: “验证此JSON并修复任何错误”
响应:
发现2个问题:
1. 第3行:"name"后的尾随逗号
2. 第5行:使用单引号而非双引号
以下是修正后的JSON:
{
"name": "example",
"data": {
"value": 42
}
}
示例2:格式化
用户请求: “漂亮地格式化此JSON”
响应:
{
"users": [
{
"id": 1,
"name": "Alice"
},
{
"id": 2,
"name": "Bob"
}
],
"total": 2
}
示例3:转换为YAML
用户请求: “将此JSON转换为YAML”
响应:
users:
- id: 1
name: Alice
- id: 2
name: Bob
total: 2