比较2个JSON对象

是否有任何方法可以接收2个JSON对象并将其进行比较以查看是否有任何数据已更改?

在审查评论之后,需要进行一些澄清。

  1. JSON对象定义为

“一组无序的名称/值对。一个对象以{(左括号)开始,以}(右括号)结束。每个名称后面都带有:(冒号),名称/值对之间以,(逗号)分隔。 ”。-

json.org

  1. 我的目标是能够简单地比较2个JSON对象文字。

我不是javascript专家,所以如果在javascript中这些是对象文字,那么我想这就是我应该称呼它们的东西。

我相信我正在寻找的是一种能够做到的方法:

  1. 深度递归以查找唯一的名称/值对
  2. 确定两个对象文字的长度,并比较名称/值对,以查看两者中是否存在差异。

回答:

仅仅解析JSON并比较两个对象是不够的,因为它不是完全相同的对象引用(但可能是相同的值)。

您需要做一个深刻的平等。

来自http://threebit.net/mail-archive/rails-

spinoffs/msg06156.html-似乎使用jQuery。

Object.extend(Object, {

deepEquals: function(o1, o2) {

var k1 = Object.keys(o1).sort();

var k2 = Object.keys(o2).sort();

if (k1.length != k2.length) return false;

return k1.zip(k2, function(keyPair) {

if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){

return deepEquals(o1[keyPair[0]], o2[keyPair[1]])

} else {

return o1[keyPair[0]] == o2[keyPair[1]];

}

}).all();

}

});

Usage:

var anObj = JSON.parse(jsonString1);

var anotherObj= JSON.parse(jsonString2);

if (Object.deepEquals(anObj, anotherObj))

...

以上是 比较2个JSON对象 的全部内容, 来源链接: utcz.com/qa/416738.html

回到顶部