我有两个json文件,我想要一个包含这些差异的json文件。重要的是,只需显示content的实际差异,而不需要更改某些元素的顺序。
这样做最好的方法是什么?我正在寻找一个尽可能高效的解决方案,因为json可能包含大量数据,而且用户需要尽可能快地完成任务。
注意:jsons可能包含不同深度编码的数据。任何编程语言都可以,但我更喜欢在php中很容易实现的答案。
发布于 2013-03-23 19:26:22
基本上,您想要的是类似于array_diff_assoc的东西,但是应用于json对象和递归。
由于引用问题,array_diff函数不是递归的:可以将数组的引用分配给该数组的条目,从而使数组无限递归。我认为不可能在json对象中获得相同的情况,从而使递归函数变得安全。
假设您希望计算对象A和B之间的差异,并在对象C中得到结果。原理是循环遍历A的每个字段( foreach应该这样做),并且在以下情况下:
A的顺序应该得到尊重。
发布于 2013-03-23 19:08:38
尝试使用比较函数
array_diff(json_decode($jsonData1), json_decode($jsonData2));发布于 2018-02-06 03:00:07
对于此任务,您可以尝试使用https://github.com/swaggest/json-diff。
它将进行按键顺序的递归比较(键的顺序并不重要)并生成JSON贴片 (在IETF的RFC 6902中指定)。
https://stackoverflow.com/questions/15590891
复制相似问题