是否有任何方法可以接收2个JSON对象并将其进行比较以查看是否有任何数据已更改?
编辑
在审查评论之后,需要进行一些澄清。
“一组无序的名称/值对。一个对象以{(左括号)开始,以}(右括号)结束。每个名称后面都带有:(冒号),名称/值对之间以,(逗号)分隔。 ”。-
json.org
我不是javascript专家,所以如果在javascript中这些是对象文字,那么我想这就是我应该称呼它们的东西。
我相信我正在寻找的是一种能够做到的方法:
仅仅解析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))
...
使用RestAssured,我试图比较两个JSON对象。 示例:第一个JSON来自excel,我将其作为字符串读取并存储 第二个 JSON 是返回响应对象的响应,该响应对象实际上是一个 JSON 我想将这两者作为JSON对象进行比较,因为当我将响应转换为String并尝试进行比较时,如果JSON模式的顺序发生变化,我的断言就会失败。 我尝试了将字符串转换成JSON的方法,但是没有找到任何方法。有人
我怎么能那么做?
URL 1-- 如何比较响应1和响应2? 响应2将有额外的属性,因此不能直接使用匹配命令 响应1{名称:你好,国家: ABCD}响应2{名称:你好,国家: ABCD,国家: xyz} 只想比较名称和国家属性,而不想硬编码比较,如匹配响应1。name==response2。名称 将来可能会添加额外的属性,并且不希望频繁修改脚本 或 是否有方法从空手道传递对JavaScript函数的响应并执行比较 比
问题内容: 是否可以比较2组json对象的差异?我所拥有的是一个通过jquery $ post()轮询JSON对象的脚本。我想要做的是拿走刚刚被轮询的对象,并将其与存储的对象进行比较。如果一个与另一个之间有任何更改,请将其应用于存储对象或替换(以任何一种方式替换),但是从UI角度来看,我正在通过查找两者之间的差异,将更改无缝地应用于JSON对象。 2.之所以要这样做,是因为现在我已经拥有了UI,因
在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部
问题内容: 我有这个间隔,当前每5秒执行一次ajax请求。我对声明有疑问。我的代码总是输入它,并且两个json值完全相同,为什么它认为它们不同? 编辑 这是控制台输出(虚线是分隔请求,它不在实际输出中) 问题答案: 不能保证以相同的方式序列化JSON对象,也不能保证属性以相同的顺序进行序列化,使用并不是测试对象相等性的好方法。 一个更好的例子是这样的函数(前一段时间在互联网上找到,希望我能感谢原始