【问题标题】:POSTMAN - EXPRESS - Modify JSON before writing to filePOSTMAN - EXPRESS - 在写入文件之前修改 JSON
【发布时间】:2019-08-01 20:44:10
【问题描述】:

我已经编写了一个对服务器的 POSTMAN 调用,该调用以 JSON 格式的项目列表进行响应,如下所示:-

{
    "count": 6909,
    "setIds": [
        "1/7842/0889#001",
        "2/4259/0166#001",
        "ENT0730/0009",
        "9D/11181#002",
        "1/9676/0001#001",
        "2/4718/0001#004",
        "2/1783/0044#001",
        "1/4501/0001#001",
        "1/2028/0002#002",
        "2/3120/0079#001",
        "2/1672/0024#001",
        "2/3398/0064#001"
}

我想每次都使用 setID 的值调用另一台服务器并遍历所有这些,以便最终调用服务器数千次以验证来自该服务器的响应。我遇到的问题是,第二个服务器希望集合 id 的形式是正斜杠转换为下划线,散列转换为点,所以

"1/7842/0889#001"

变成

"1_7842_0889.001"

我有在 POSTMAN 中将一个转换为另一个的代码

   var jsonData = pm.response.json()

    for (var i=0; i<jsonData.setIds.length; i++)
    {
    var new_j = jsonData.setIds[i].replace (/#/g, ".");
    var new_i = new_j.replace (/\//g, "_");
    }
})

这工作得很好,它在 POSTMAN 的控制台中创建了正确的东西,但显然我真正需要做的是以正确的形式将整个 JSON 保存到一个文件中,然后使用该文件逐行读取修正数据。我似乎无法使用我的代码以正确的形式将数据保存在文件中,我怀疑我遗漏了一些简单的东西。有没有办法从邮递员或脚本中逐行编写文件并在我创建数据时对其进行操作?

或者,我想我可以从我保存的 JSON 中读取,即完整的响应并通过将数据作为预请求脚本进行操作进行迭代?

我曾尝试使用环境变量来做这样的事情 - 所以在我的第一次通话中我这样做了:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable('setIds', JSON.stringify(jsonData));

然后在我第二次调用要发送有效负载的 express 服务器时,我运行了一个预请求脚本,我认为该脚本可以使用 env 变量工作,但由于它似乎不喜欢 {. ..

SyntaxError: Unexpected token {

我认为可能有一些巧妙的方法可以解决这个问题,要么在 POSTMAN 之外用 javascript 完成所有这些工作,但我有点迷失从哪里开始。任何帮助表示赞赏

【问题讨论】:

  • 您的问题无法阅读 - 请修正格式

标签: javascript json express postman


【解决方案1】:

会告诉您正在处理内容,但没有将其设置回 JSON 对象??

jsonData.setIds[i] = new_i;

可以提供帮助,或者您可以使用 2x 将其替换为字符串并转换回以使其更容易(以防其他地方没有 / 或 #)。

var src = {
    "count": 6909,
    "setIds": [
        "1/7842/0889#001",
        "2/4259/0166#001",
        "ENT0730/0009",
        "9D/11181#002",
        "1/9676/0001#001",
        "2/4718/0001#004",
        "2/1783/0044#001",
        "1/4501/0001#001",
        "1/2028/0002#002",
        "2/3120/0079#001",
        "2/1672/0024#001",
        "2/3398/0064#001"
        //...
    ]
}
var str = JSON.stringify(src, null, 4);
str = str.replace(/\//g,'_').replace(/#/g,'.');
console.log(str);
var res = JSON.parse(str);
console.log(res);

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-18
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多