什么时候需要JSON对比
- API返回数据与预期不符,需要找差异
- 配置文件修改后忘记改了什么
- 前后端数据格式不匹配,需要排查哪里不同
在线工具使用方法
使用CloverTools JSON对比工具:打开工具 - 支持左右两栏粘贴、语法高亮、一键找出差异。
命令行对比(jq)
# 安装jq apt install jq # 对比两个JSON文件 diff <(jq -S . a.json) <(jq -S . b.json)
Node.js代码对比
const fs = require('fs');
function diffJson(obj1, obj2, path = '') {
const result = {};
if (typeof obj1 !== typeof obj2) {
result[path] = { type: 'type', a: typeof obj1, b: typeof obj2 };
return result;
}
if (typeof obj1 !== 'object' || obj1 === null) {
if (obj1 !== obj2) {
result[path] = { a: obj1, b: obj2 };
}
return result;
}
const keys = new Set([...Object.keys(obj1||{}), ...Object.keys(obj2||{})]);
keys.forEach(key => {
const subResult = diffJson(obj1?.[key], obj2?.[key], path ? path + '.' + key : key);
Object.assign(result, subResult);
});
return result;
}
快速diff算法
如果只需要知道是否相同,不需要知道差异:JSON.stringify(a) === JSON.stringify(b)(注意属性顺序会影响结果)。
常见问题
Q: 如何使用 json数据对比工具怎么用 相关工具?
A: 这类工具一般有明确的输入框和输出框,按提示输入内容,点击对应按钮即可得到结果。建议先用简单示例测试功能是否正常,再处理实际数据。
A: 这类工具一般有明确的输入框和输出框,按提示输入内容,点击对应按钮即可得到结果。建议先用简单示例测试功能是否正常,再处理实际数据。
Q: json数据对比工具怎么用 适合在什么场景使用?
A: 根据具体工具类型决定。格式转换工具适合处理第三方数据,编码工具适合加密传输,压缩工具适合文件上传前处理。多积累工具使用经验,遇到问题时能快速判断用哪个工具解决。
A: 根据具体工具类型决定。格式转换工具适合处理第三方数据,编码工具适合加密传输,压缩工具适合文件上传前处理。多积累工具使用经验,遇到问题时能快速判断用哪个工具解决。
Q: 有没有更好的替代工具?
A: 不同工具有不同侧重,重点是理解原理。可以同时安装多个类似工具,实际使用中对比效果,选择最顺手的一个。随着使用经验增加,你也能判断工具的好坏。
A: 不同工具有不同侧重,重点是理解原理。可以同时安装多个类似工具,实际使用中对比效果,选择最顺手的一个。随着使用经验增加,你也能判断工具的好坏。