我有两个 JSON 对象,一个是输入,另一个是输出,我想验证输出是否与我在输入中指定的输入以及键和值相同,而且它不应该比较我在一个“排除”数组。
Json Object1:(input)
{
"name": "Sonu",
"city": "NewYork",
"Amount": 5000,
"mode": "Weekly",
"duration": "15",
"createdCanvasAgentId": 2,
"isActive": 1
}
Json Object2:(output)
{
"id": 53,
"name": "Sonu",
"city": "NewYork",
"Amount": 5000,
"mode": "Weekly",
"duration": "15",
"qty": null,
"createdCanvasAgentId": 2,
"isActive": true
}
比较在“排除”数组中时我应该忽略的字段
exclude = {"id","qty","isActive"}
代码片段如下:
//Input
var en_val = pm.environment.get("my_array");
console.log(en_val);
keysave = Object.keys(JSON.parse(en_val));
console.log(keysave);
valuesave=Object.values(JSON.parse(en_val));
console.log(valuesave);
// Output
var resdata = JSON.parse(responseBody);
console.log(resdata);
keylist = Object.keys(resdata.data.list[0]);
console.log(keylist);
valuelist =Object.values(resdata.data.list[0]);
console.log(valuelist);
// exclude contains array of values that need not be compared
var ex=pm.environment.get("exclude");
var excludeKeys = Object.keys(JSON.parse(ex));
最佳答案
Json Object 1: keysave,valuesave
Json Object 2: keylist,valuelist
//values that aren't need to be checked
exclude = ["id","qty","isActive"]
代码:
var ex1=pm.environment.get("exclude");
var resp=[];
for (var i in keysave)
{
console.log(keysave[i]);
if(ex1.indexOf(keysave[i]) < 0)
{
var flag =0;
for (var j in keylist)
{
if(keylist[j] === keysave[i] && valuelist[j] === valuesave[i])
{
flag = 0;
break;
}
else
{
flag = 1;
}
}
if(flag === 0)
{
console.log("Matched value "+keysave[i]);
}
else
{
console.log("None matched value "+keysave[i]);
resp.push(keysave[i])
console.log(resp);
}
}
}
if(resp.length > 0)
{
tests[resp] = false;
}
else
{
tests['Both JSON are Equal'] = true;
}
关于javascript - 如何比较不包括在单独数组中指定的字段的两个 JSON 对象?( postman 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077392/