javascript - 如何比较不包括在单独数组中指定的字段的两个 JSON 对象?( postman 脚本)

标签 javascript json object compare postman

我有两个 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/

相关文章:

javascript - 将对象推送到数组仅返回最后推送的对象

javascript - 滚动元素上的渐变在Safari中突然消失

javascript - 当 HTML 元素滚动到 View 中时是否会触发 Javascript 事件?

jquery - Rails Jquery 自动完成 JSON 失败

C# - 将嵌套 json 反序列化为嵌套 Dictionary<string, object>

android - 哪个是最适合 Android 应用程序的后端框架?

javascript - 在循环内使用条件

Javascript:将 HSV 转换为 RGB,输出正确但已打乱

javascript - 使用对象列表将 ID 数组映射到字符串数组

javascript - 如何从对象数组中获取值?