Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何比较JSON主体对象名称(键)本身?_Javascript_Typescript_Postman_Postman Testcase - Fatal编程技术网

Javascript 如何比较JSON主体对象名称(键)本身?

Javascript 如何比较JSON主体对象名称(键)本身?,javascript,typescript,postman,postman-testcase,Javascript,Typescript,Postman,Postman Testcase,我对邮递员很陌生。我想比较JSON主体对象响应 json_response = JSON.parse(responseBody); x=json_response.counter pm.expect(x).to.equal("400"); 它给我对应的“计数器”的400值(或键“计数器”的“400”值) 但我想将“计数器”与“计数器”本身进行比较。(例如,柜台、柜台等) 基本上,我想测试接收到的所有JSON密钥是否与我正在寻找的相同! 有简单的方法吗?邮递员(由于某种原因,此链接指向pm.co

我对邮递员很陌生。我想比较JSON主体对象响应

json_response = JSON.parse(responseBody);
x=json_response.counter
pm.expect(x).to.equal("400");
它给我对应的“计数器”的400值(或键“计数器”的“400”值)

但我想将“计数器”与“计数器”本身进行比较。(例如,柜台、柜台等)

基本上,我想测试接收到的所有JSON密钥是否与我正在寻找的相同! 有简单的方法吗?

邮递员(由于某种原因,此链接指向
pm.cookies
,但
pm.expect
的条目位于该标题下)。A使用您可以通过说出
expect(someObject).to.have.keys(expectedKeys)
来验证响应是否只有您期望的键,并定义键应该是什么:

//为了方便起见-在邮递员那里,这些东西很容易买到。
var pm={
期待:柴,期待,
答复:{
json:function(){
//你会得到什么样的回应
返回{“计数器”:400,“有效分钟”:660,“当前计数器”:322};
}
}
};
/*---测试脚本开始--*/
var expectedKeys=[“计数器”、“有效分钟数”、“当前计数器”];
expect(pm.response.json()).to.have.keys(expectedKeys);//好的

你脑子里有一个特定的模式,你想检查一下。(例如,必填字段、类型等) 另一种可能的方法是根据预定义的JSON模式进行验证:

//Schema definition (can be available as a global var)
var schema = {
    "type": "object",
    "properties": {
        "counter": {
            "type": "number"
        },
        "validInMinutes": {
            "type": "number"
        },
        "currentCounter": {
            "type": "number"
        }
    },
    "required": ["counter", "validInMinutes", "currentCounter"]
};

//Test
pm.test('Schema is valid', function() {
    var jsonData = pm.response.json();
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});

“required”:[“counter”、“validInMinutes”、“currentCounter”]
正是您对必须存在的属性类型的定义。但是你也可以定义更多的strct规则,比如“必须是Numer类型的”,或者必须正好有3个数字,等等。

将它们与
.toLowerCase()
进行比较,因为现在“Counter”不存在,因为你的密钥是“Counter”。JSON是用来传输Javascript对象的字符串。JSON代表Javascript对象表示法。您不是在比较“JSON正文”中的键,而是在比较javascript对象中的键。@Jabberwocky这是个错误的建议,因为属性区分大小写。@kishor您要找的键是什么?看起来您希望字符串等于数字(“400”与400不同)
//Schema definition (can be available as a global var)
var schema = {
    "type": "object",
    "properties": {
        "counter": {
            "type": "number"
        },
        "validInMinutes": {
            "type": "number"
        },
        "currentCounter": {
            "type": "number"
        }
    },
    "required": ["counter", "validInMinutes", "currentCounter"]
};

//Test
pm.test('Schema is valid', function() {
    var jsonData = pm.response.json();
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});