以编程方式返回两个json文件差异的最佳方法

Mih*_*nca 6 php algorithm comparison performance json

我有两个json文件,我想得到一个包含差异的json.重要的是,无论是否改变某些元素的顺序,都只应显示内容的实际差异.

最好的方法是什么?我正在寻找尽可能高效的解决方案,因为jsons可能包含大量数据,用户需要尽快完成工作.

注意:jsons可能包含以不同深度编码的数据.任何编程语言都可以,但我更喜欢一个可以在php中轻松实现的答案.

tuf*_*kid 8

尝试使用array_diff函数

array_diff(json_decode($jsonData1), json_decode($jsonData2));
Run Code Online (Sandbox Code Playgroud)


did*_*erc 5

基本上,您想要的类似于array_diff_assoc,但适用于json对象,并且是递归的。

array_diff由于引用问题,这些函数不是递归的:可以将数组的引用分配给该数组的条目,从而使数组无限递归。我认为使用json对象无法获得相同的情况,从而使递归函数安全。

假设您希望计算对象A和对象B之间的差,并将结果存储在对象C中。原理是遍历A的每个字段(a foreach应该这样做),以及何时:

  • B中不存在此类字段,请通过C复制它。
  • B中存在一个相似的字段,将A字段与B字段的差的结果放入C中,这是对以这些字段为参数的diff函数以及结果的新鲜对象的递归调用。

应遵守A的顺序。

  • 这不是必需的。 (2认同)