Postman—如何替换JSON响应中所有特定属性的值,以便稍后将其用作另一个请求';身体
我有2个API请求。第一个是GET,它返回一个响应。该响应用作第二个请求(POST)中的主体/有效负载。但是在第二次请求中使用之前,有效负载应该有一些要替换的值(在我下面的例子中,它应该是“Status”属性的值) 我怎么做 以下是我的回答示例:Postman—如何替换JSON响应中所有特定属性的值,以便稍后将其用作另一个请求';身体,postman,postman-collection-runner,Postman,Postman Collection Runner,我有2个API请求。第一个是GET,它返回一个响应。该响应用作第二个请求(POST)中的主体/有效负载。但是在第二次请求中使用之前,有效负载应该有一些要替换的值(在我下面的例子中,它应该是“Status”属性的值) 我怎么做 以下是我的回答示例: { "Variations":[ { "ItemIds":[ "xxx" ], "Items":[ {
{
"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
}
这是我的代码,但似乎不起作用(替换部分):
我猜您正在尝试将所有
非活动
值替换为活动
。在这种情况下,您应该使用=
进行分配,而不是=
。您提供的JSON文件无效,无法在我的计算机上运行您的代码。如果这不起作用,我很高兴能仔细看看
需要根据您的更新进行这些更改
1-为了处理JSON对象,您需要解析响应,因为它是string
,并且您不能调用类似JsonData的东西。在该对象上的变体是JsonData
。请确保JsonData
是JSON对象。如果没有添加这样的东西来解析它
var parsedJson = JSON.parse(jsonData)
2-您似乎错过了函数中迭代项的一个数组层
。由于有两个嵌套数组要达到状态
,replaceStatus
函数应如下所示
function replaceStatus() {
_.each(parsedJson.Variations, (arrayItem) => {
_.each(arrayItem.Items, (item) => {
if(item.Status !== "NonActive") {
item.Status = "NonActive";
console.log("arrayItem " + item.Status);
}
});
});
}
我猜您正在尝试将所有非活动
值替换为活动
。在这种情况下,您应该使用=
进行分配,而不是=
。您提供的JSON文件无效,无法在我的计算机上运行您的代码。如果这不起作用,我很高兴能仔细看看
需要根据您的更新进行这些更改
1-为了处理JSON对象,您需要解析响应,因为它是string
,并且您不能调用类似JsonData的东西。在该对象上的变体是JsonData
。请确保JsonData
是JSON对象。如果没有添加这样的东西来解析它
var parsedJson = JSON.parse(jsonData)
2-您似乎错过了函数中迭代项的一个数组层
。由于有两个嵌套数组要达到状态
,replaceStatus
函数应如下所示
function replaceStatus() {
_.each(parsedJson.Variations, (arrayItem) => {
_.each(arrayItem.Items, (item) => {
if(item.Status !== "NonActive") {
item.Status = "NonActive";
console.log("arrayItem " + item.Status);
}
});
});
}
您是否在测试部分发布了全部代码,或者只是其中的一部分?
我从您的一条评论中看到,您无法看到记录到控制台的输出
这可能很简单,但是,如果您发布了整个代码,那么您可能忘记了在post调用之前调用replaceStatus()
函数。您是否在测试部分发布了整个代码,或者只是其中的一部分?
我从您的一条评论中看到,您无法看到记录到控制台的输出
这可能非常琐碎,但是,如果您发布了整个代码,那么您可能忘记了在post调用之前调用replaceStatus()
函数。谢谢@Mehran!我已经更正了JSON响应(在原始消息中)。我也试着用“=”代替“=”。但它似乎仍然不起作用。或者可能是我做得不对。也就是说,我看不到这一行输出到控制台-Console.log(“arrayItem”+arrayItem)代码>我也不确定如何更新jsonData(在值被替换之后)。@KVN通过在在线JSON linter中测试JSON使其有效。我很确定这个解决方案在我的机器上试过后是有效的。也可以在不解析JSON的情况下尝试它,因为我怀疑代码第一行中的“.JSON”会解析它,然后您会逐字解析它两次谢谢@Mehran!是的,似乎额外的解析是不必要的。而且它似乎起作用了!(顺便说一句,在我看到你最后的回复之前,我删除了我的最后一条评论,并打算对其进行一些修改)。非常感谢你的帮助!谢谢@Mehran!我已经更正了JSON响应(在原始消息中)。我也试着用“=”代替“=”。但它似乎仍然不起作用。或者可能是我做得不对。也就是说,我看不到这一行输出到控制台-Console.log(“arrayItem”+arrayItem)代码>我也不确定如何更新jsonData(在值被替换之后)。@KVN通过在在线JSON linter中测试JSON使其有效。我很确定这个解决方案在我的机器上试过后是有效的。也可以在不解析JSON的情况下尝试它,因为我怀疑代码第一行中的“.JSON”会解析它,然后您会逐字解析它两次谢谢@Mehran!是的,似乎额外的解析是不必要的。而且它似乎起作用了!(顺便说一句,在我看到你最后的回复之前,我删除了我的最后一条评论,并打算对其进行一些修改)。非常感谢你的帮助!感谢@Derryl Thomas指出这一点。我真的很想实际使用它:/现在添加了它。感谢@Derryl Thomas指出这一点。我真的不知道该怎么使用它了。