Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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和Postman计算JSON数组中的记录_Javascript_Json_Postman - Fatal编程技术网

使用javascript和Postman计算JSON数组中的记录

使用javascript和Postman计算JSON数组中的记录,javascript,json,postman,Javascript,Json,Postman,我有一个返回2条记录的控件: { "value": [ { "ID": 5, "Pupil": 1900031265, "Offer": false, }, { "ID": 8, "Pupil": 1900035302, "Offer": false, "OfferDetail": "" } ] } 我需要通过邮递员测试,我有2条记录返回。我尝试过在这里和其他地方找到的各

我有一个返回2条记录的控件:

{
  "value": [
    {
      "ID": 5,
      "Pupil": 1900031265,
      "Offer": false,
    },
    {
      "ID": 8,
      "Pupil": 1900035302,
      "Offer": false,
      "OfferDetail": ""
    }
  ]
}
我需要通过邮递员测试,我有2条记录返回。我尝试过在这里和其他地方找到的各种方法,但都不走运。使用下面的代码无法返回预期的答案

responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = list === undefined || list.length === 2;

在这一点上,我不确定是我正在测试的API出了问题,还是我的编码出了问题——我尝试过循环返回的项目,但这对我也不起作用。有人能给我一些建议吗?我是javascript新手,所以我希望我的问题有一个明显的原因,但我没有看到。非常感谢

您的响应主体是一个对象,您无法找到对象的长度,请重试

var list = responseJson.value.length;

如评论中所述,您应该测试
responseJson.value.length

responseJson=JSON.parse(responseboody);
测试[“预期数量”]=typeof responseJson===“未定义”| | responseJson.value.length;

更正json。试试这个

============================v

var test = JSON.parse('{"value": [{"ID": 5,"Pupil": 1900031265,"Offer": false},{"ID": 8,"Pupil": 1900035302,"Offer": false,"OfferDetail": ""}] }')
    
test.value.length; // 2

因此,您需要识别json中的数组(从
[
括号开始。然后取下键,然后在postman中的
测试部分下检查
键的
长度
,执行以下操作(下面的屏幕截图):

var body=JSON.parse(responseBody);
测试[“计数:+body.value.length]=真;

以下是您应该看到的(注意:我用JSON替换了
responseBody
,以模拟上面的示例):

我有一个类似的问题,我用来测试一定数量的数组成员的是:

responseJson = JSON.parse(responseBody);
tests["Response Body = []"] = responseJson.length === valueYouAreCheckingFor;
要检查您得到的值,请打印它并检查邮递员控制台

console.log(responseJson.length);

在验证JSON中数组的长度时,我遇到了类似的问题-

responseJson = JSON.parse(responseBody);
var list = responseBody.length;
tests["Expected number"] = responseJson.value.length === list;
工作代码

 pm.test("Verify the number of records",function()
 {
   var response = JSON.parse(responseBody); 
   pm.expect(Object.keys(response.value).length).to.eql(5);

 });
//Please change the value in to.eql function as per your requirement    
//'value' is the JSON notation name for this example and can change as per your JSON

这就是我计算记录时所做的

//parsing the Response body to a variable
    responseJson = JSON.parse(responseBody);

//Finding the length of the Response Array
    var list = responseJson.length;
    console.log(list);
    tests["Validate service retuns 70 records"] = list === 70;

首先,您应该将响应转换为json并找到值路径。值为数组。您应该调用length函数来获取其中的对象数量,并检查您的预期大小

pm.test("Validate value count", function () {
    pm.expect(pm.response.json().value.length).to.eq(2);
});

以下是我找到答案的最简单方法:

pm.expect(Object.keys(pm.response.json()).length).to.eql(18);

无需对变量进行任何自定义。只需将“18”复制、粘贴并调整为所需的数字即可。

一个数组中仅断言2个对象的更新版本:

pm.test("Only 2 objects in array", function (){
    pm.expect(pm.response.json().length).to.eql(2);
});

responseJson
是一个对象,读取键
value
,然后
length
您的json数组的长度为1个名为“value”的对象,而不是您的“value”对象的长度应为2。请改为检查
responseJson.value
length。我将其添加到一个大响应中,它永远不会返回,只会持续加载数小时。@conniedcinko我已经对大数据执行了此操作,此代码适用于我
var body=JSON.parse(responseBody);测试[“Count:”+body.length]=真的;
非常好,谢谢!它工作得最好!我得到:AssertionError:预期3将完全相等10@liquide这可能仅仅意味着你的测试正确地失败了,但并不意味着测试是错误的。