【发布时间】:2017-11-30 12:21:08
【问题描述】:
我有两个 json 对象,
对象 1
{
"ClassificationId": 1,
"ClassificationSort": 40,
"ClassificationType": 146,
"IsActive": true,
"Level": 0,
"LongName": "XYZ",
"ShortName": "XYZ"
}, {
"ClassificationId": 2,
"ClassificationSort": 45,
"ClassificationType": 146,
"IsActive": true,
"Level": 0,
"LongName": "ABC",
"ShortName": "ABC"
}, {
"ClassificationId": 3,
"ClassificationSort": 50,
"ClassificationType": 146,
"IsActive": true,
"Level": 0,
"LongName": "DEF",
"ShortName": "DEF"
}
对象 2
{
"ClassificationId": 1,
"ClassificationSort": 40,
"ClassificationType": 146,
"IsActive": true,
"Level": 0,
"LongName": "XYZ_1",
"ShortName": "XYZ"
}, {
"ClassificationId": 2,
"ClassificationSort": 45,
"ClassificationType": 146,
"IsActive": true,
"Level": 0,
"LongName": "ABC_1",
"ShortName": "ABC"
}, {
"ClassificationId": 3,
"ClassificationSort": 50,
"ClassificationType": 146,
"IsActive": true,
"Level": 0,
"LongName": "DEF_1",
"ShortName": "DEF"
}
我想比较两个objects 以找出哪个key 发生了变化。我需要更改后的key 和value
请参阅下面的 sn-p,了解到目前为止我尝试过的内容。但是它没有按预期工作。
var result = JSON.parse(json1);
var result2 = JSON.parse(json2);
$.each(result, function (k, v) {
var key1 = k;
var value1 = v;
$.each(result2, function (k2, v2) {
if (key1 == k2) {
if (value1 != v2)
//console.log("key:" + k2 + "value:" + v2);
changeData = "[{\"ChangedColumn\":\"" + key1 + "\",\"ChangedValueOld\":\"" + value1 + "\",\"ChangedValueNew\":\"" + v2 + "\",\"RowIdentifierValue\":\"140\"}],";
//console.log(changeData);
return false;
}
});
});
任何帮助将不胜感激。
【问题讨论】:
-
您附加的 json 语法无效。在这里查看 - json.parser.online.fr
-
在其对象数组周围添加方括号@ŁukaszTrzewik
-
如果@Sarat 使用他在这里给出的方式,那可能是问题!
-
“未按预期工作” ...更具体。有什么错误吗?预期的结果是什么?也永远不要手动创建 json。它容易出错,而且工作量远远超过需要