3 个不稳定版本
0.2.0 | 2023 年 8 月 13 日 |
---|---|
0.1.1 | 2023 年 8 月 12 日 |
0.1.0 | 2023 年 8 月 12 日 |
#2135 在 编码
3,004 每月下载量
13KB
245 代码行
创建可机器读取的 JSON 差异
用法
库
let a = serde_json::json!({
"list": [1, 2, 3],
"object": {"a": "b"}
});
let b = serde_json::json!({
"list": [1, 2, 3],
"object": {"a": "b"}
});
assert!(serde_json_diff::values(a, b).is_none());
serde_json_diff::objects
和 serde_json_diff::arrays
也专门暴露出来,用于比较 serde_json::Map<String, serde_json::Value>
和 Vec<serde_json::Value>
。
命令行界面
serde_json_diff my_json_file.json my_other_json_file.json
提示:由于命令名 serde_json_diff
较长,我已在 shell 配置中将其别名化
alias jdiff="serde_json_diff"
示例
比较此文件
{
"A": "a",
"B": "a",
"D": 1,
"E": 1,
"F": [],
"G": ["a", "a"]
}
与此文件
{
"A": "a",
"C": "b",
"D": 2,
"E": "1",
"F": [true],
"G": ["a", "ab"]
}
结果为以下差异(序列化为 JSON)
{
"B": {
"entry_difference": "extra"
},
"D": {
"entry_difference": "value",
"value_diff": {
"difference_of": "scalar",
"source": 1,
"target": 2
}
},
"E": {
"entry_difference": "value",
"value_diff": {
"difference_of": "type",
"source_type": "number",
"target_type": "string",
"target_value": "1"
}
},
"F": {
"entry_difference": "value",
"value_diff": {
"difference_of": "array",
"array_difference": "longer",
"different_pairs": null,
"missing_elements": 1
}
},
"G": {
"entry_difference": "value",
"value_diff": {
"difference_of": "array",
"array_difference": "pairs_only",
"different_pairs": {
"1": {
"difference_of": "scalar",
"source": "a",
"target": "ab"
}
}
}
},
"C": {
"entry_difference": "missing",
"value": "b"
}
}
依赖项
~0.7–1.8MB
~37K SLoC