我有2个API请求。第一个是GET,它返回一个响应。此响应在第二个请求(POST)中用作“正文/有效负载”。但是有效负载应具有某些值,才能在第二个请求中使用之前替换(在我的情况下,该值应为“状态”属性的值)。
我该怎么办?
这是我的示例响应:
aws s3 ls s3://BUCKET/ --recursive | %{ "aws s3api put-object-acl --bucket BUCKET --key "+$_.ToString().substring(30)+" --acl bucket-owner-full-control" }
这是我的代码,但似乎不起作用(替换部分):
{
"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
}
答案 0 :(得分:1)
我猜您正在尝试将所有NonActive
值替换为Active
。在这种情况下,您应该使用=
而不是==
进行分配。您提供的JSON文件无效,因此无法在我的计算机上运行您的代码。如果不起作用,我很乐意仔细查看
需要根据您的更新进行这些更改
1-为了处理JSON对象,您需要解析响应string
,而不能在其上调用类似JsonData.Variations
的东西。请确保jsonData
是JSON对象。如果不添加这样的东西来解析
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);
}
});
});
}
答案 1 :(得分:1)
您是否将整个代码发布在测试部分或仅发布了一部分? 我从您的一条评论中看到,您看不到记录到控制台的输出。
这可能是非常琐碎的,但是,如果您确实发布了整个代码,则看起来您可能忘记了在调用调用之前调用replaceStatus()
函数。