比较2个JSON对象
可能重复:
JavaScript中的对象比较
有什么方法需要2个JSON对象,并比较2,看看是否有任何数据已经改变?
编辑
审查意见后,需要澄清一些情况。
-
一个JSON对象被定义为
一个对象以{(左括号)开始,以}(右括号)结束,每个名字后跟:(冒号),名称/值对用逗号隔开, “。 – json.org
-
我的目标是能够比较2个JSON对象文字,简单地说。
我不是一个JavaScript大师,所以如果在JavaScript中,这些是对象文字,那么我想这就是我应该叫他们。
我相信我正在寻找的是一种方法,能够:
- 深度recursionfind一个唯一的名称/值对
- 确定两个对象文字的长度,并比较名称/值对,以查看是否存在差异。
简单地parsingJSON并比较这两个对象是不够的,因为它不会是完全相同的对象引用(但可能是相同的值)。
你需要做一个深刻的平等。
从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)) ...