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

时间:2016-03-14 12:02:48

标签: javascript json postman

我有一个返回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的新手,所以我希望我的问题有一个明显的原因,但我没有看到它。非常感谢。

11 个答案:

答案 0 :(得分:12)

纠正你的json。试试这个。

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

test.value.length; // 2

答案 1 :(得分:9)

在邮递员中,在Tests部分下,执行以下操作(下面的屏幕截图): var body = JSON.parse(responseBody); tests["Count: " + body.value.length] = true;

以下是您应该看到的内容(注意:我将responseBody替换为JSON以模拟上面的示例): enter image description here

答案 2 :(得分:5)

您的回复正文是一个对象,您无法找到对象的长度尝试

var list = responseJson.value.length;

答案 3 :(得分:5)

更多更新的版本,仅声明一个数组中的2个对象:

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

答案 4 :(得分:4)

这是我想出的最简单的方法:

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

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

答案 5 :(得分:3)

这就是我计算脚架数量的方法

//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;

enter image description here

答案 6 :(得分:1)

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

responseJson = JSON.parse(responseBody);
tests["Response Body = []"] = responseJson.length === valueYouAreCheckingFor;

要查看您获得的值,请打印并检查邮递员控制台。

console.log(responseJson.length);

答案 7 :(得分:0)

在验证JSON中的数组长度时,我遇到了类似的问题。以下代码段可以帮助您解决问题 -

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:-1)

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

responseJson = JSON.parse(responseBody); tests["Expected number"] = typeof responseJson === 'undefined' || responseJson.value.length;

答案 10 :(得分:-1)

工作代码

 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