我有2个API请求。第一个是获取的,它返回响应。此响应在第二请求中用作正文/有效载荷(帖子(。但是有效载荷应在第二请求中使用之前要替换某些值(在我的情况下为"状态"属性应该是值(。
我该怎么做?
这是我的示例响应:
{
"Variations":[
{
"ItemIds":[
"xxx"
],
"Items":[
{
"Id":"67-V1",
"GuId":"xxx",
"Type":"Unit",
"Status":"Active"
}
],
"Name":"VAR 1",
"Id":"67-V1"
},
{
"ItemIds":[
"yyy"
],
"Items":[
{
"Id":"67-V2",
"GuId":"yyy",
"Type":"Unit",
"Status":"Active"
}
],
"Name":"VAR 2",
"Id":"67-V2"
},
{
"ItemIds":[
"zzz"
],
"Items":[
{
"Id":"67-V3",
"GuId":"zzz",
"Type":"Unit",
"Status":"Active"
}
],
"Name":"VAR 3",
"Id":"67-V3"
}
],
"ItemIds":[
],
"Items":[
],
"Name":"MAINP",
"Id":"67",
"Color":null
}
这是我的代码,但似乎不起作用(替换部分(:
var jsonData = pm.response.json();
function replaceStatus() {
_.each(jsonData.Variations, (arrayItem) => {
if(arrayItem.Items.Status !== "NonActive") {
arrayItem.Items.Status == "NonActive";
console.log("arrayItem " + arrayItem);
}
});
}
pm.test("Run Function", replaceStatus ());
pm.sendRequest({
url: 'localhost:3000/post',
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: {
mode: 'raw',
raw: JSON.stringify(jsonData)
}
}, (err, res) => {
console.log(res)
})
我想您正在用Active
替换所有NonActive
值。在这种情况下,您应该使用=
进行分配而不是==
。您提供的JSON文件无效,无法在我的计算机上运行代码。如果那不起作用,我很高兴仔细看看
基于您的更新,需要进行这些更改
1-为了处理JSON对象,您需要解析响应,因为它是string
,并且无法在该响应上像JsonData.Variations
一样调用STH。请确保jsonData
是JSON对象。如果不添加这样的sth来解析
var parsedJson = JSON.parse(jsonData)
2-似乎您错过了函数中的一个数组层,以迭代items
。由于您有两个嵌套阵列可以到达Status
replaceStatus
功能应如下
function replaceStatus() {
_.each(parsedJson.Variations, (arrayItem) => {
_.each(arrayItem.Items, (item) => {
if(item.Status !== "NonActive") {
item.Status = "NonActive";
console.log("arrayItem " + item.Status);
}
});
});
}
您是否在"测试"部分中发布了整个代码或仅一部分?从您的一篇评论中,我看不到您看不到已记录到控制台的输出。
这可能很琐碎,但是,如果您发布了整个代码,看来您可能已经忘记了在发布通话之前调用replaceStatus()
功能。