我有一个问题我想解决,不必花费大量的手动工作来分析作为替代方案。
我有 2 个 JSON 对象(从不同的 Web 服务 API 或 HTTP 响应返回)。两个 JSON 对象之间存在交叉数据,它们共享相似的 JSON 结构,但并不完全相同。一个 JSON(较小的)就像较大的 JSON 对象的子集。
我想找到两个对象之间的所有相交数据。实际上,我对对象内的共享参数/属性更感兴趣,而不是每个对象的参数/属性的实际值。因为我想最终使用来自一个 JSON 输出的数据来构造另一个 JSON 作为 API 调用的输入。不幸的是,我没有为每个 API 定义 JSON 的文档。:(
让这更难的是 JSON 对象非常庞大。如果您通过 Windows 记事本打印出来,它会跨越一页。另一个跨越 37 页。API 返回压缩为单行的 JSON 输出。普通文本比较没有太大作用,我必须手动重新格式化或使用脚本来分解带有换行符的对象等,以便文本比较能够正常工作。尝试使用 Beyond Compare 工具。
我可以进行手动搜索/grep,但是在较小的 JSON 中循环遍历所有参数会很痛苦。可以编写代码来做到这一点,但我也必须花时间去做,并测试代码是否也有效。或者也许已经有一些现成的代码......
或者可以寻找 JSON diff 类型的工具。找了一些。遇到了这些:
https://github.com/samsonjs/json-diff或https://tlrobinson.net/projects/javascript-fun/jsondiff
https://github.com/andreyvit/json-diff
两者都没有做我想做的事。大概 JSON 太复杂或太大而无法处理。
关于最佳解决方案的任何想法?还是目前最好的解决方案是使用 grep 对每个参数/属性进行手动分析?
就代码解决方案而言,任何语言都可以。我只需要一个解析器或差异工具来做我想做的事。
抱歉,也无法与您共享 JSON 数据结构,它可能被视为机密。