Powershell-调用RestMethod-后嵌套JSON
我正在尝试与API交互,将一些数据发布到我们使用的服务中,以便将一些电子邮件地址添加到策略中。这将最终获得一个电子邮件地址列表,并对每个地址进行循环,但现在我只想让它使用一个地址 我使用的是Powershell 7,可以说我是Powershell的中间版本,但这是我第一次尝试与API交互,使用JSON和Invoke-RESTMethod命令。该服务的API参考显示了许多其他语言的代码示例,而不是PS 这就是我遇到的问题。我正试图建立一个由三个元素而不是两个元素组成的-Body语句。下面是CURL中的示例语句:Powershell-调用RestMethod-后嵌套JSON,powershell,powershell-7.0,Powershell,Powershell 7.0,我正在尝试与API交互,将一些数据发布到我们使用的服务中,以便将一些电子邮件地址添加到策略中。这将最终获得一个电子邮件地址列表,并对每个地址进行循环,但现在我只想让它使用一个地址 我使用的是Powershell 7,可以说我是Powershell的中间版本,但这是我第一次尝试与API交互,使用JSON和Invoke-RESTMethod命令。该服务的API参考显示了许多其他语言的代码示例,而不是PS 这就是我遇到的问题。我正试图建立一个由三个元素而不是两个元素组成的-Body语句。下面是CURL
{
"custodians": [
{
"emailId": "john.doe@someorg.com"
}
],
"action": "add"
}
作用:添加部分是好的,容易豌豆。我正试图找出如何正确设置保管人部分的格式。我不知道如何做三个元素而不是两个。我尝试了{}[]和()的不同组合,但没有成功:
"custodians" = ({"emailId" = "emailaddress@place.com"})
给我一个“赋值表达式无效”错误
及
给我一个“[”后缺少类型名”错误
这些,以及我键入的其他一些组合,都在VSCode中显示了格式错误,所以我已经知道它们不起作用,我只是不知道为什么。我确定我只是没有破解@、{}、[]或()的正确组合,但我似乎无法在网上找到任何信息(可能是因为我在搜索中没有使用正确的词汇或短语)这显示了如何使用三个元素进行格式化
如果相关或有帮助,下面是我正在处理的整个查询的一个较大的代码示例。假设Auth头很好(我可以请求我的Auth令牌,并且到目前为止没有问题):
您希望在保管人中有多个EmailID
$body = @{
custodians = @(
@{emailId = 'emailaddress@place.com' }
@{emailId = 'emailaddress@place.com' }
@{emailId = 'emailaddress@place.com' }
)
Action = 'add'
}
输出:
$body | ConvertTo-Json
{
"Action": "add",
"custodians": [
{
"emailId": "emailaddress@place.com"
},
{
"emailId": "emailaddress@place.com"
},
{
"emailId": "emailaddress@place.com"
}
]
}
Daniels answer似乎回答了我关于语法/格式的问题,因为我的代码不再对我大喊大叫。现在我在提交时遇到了一个“无效JSON文档”错误,我确信这在技术上是一个单独的问题。
$headers = @{
"Authorization" = $bearerAuthValue
"Accept" = "application/json"
"Content Type" = "application/json"
}
$body = @{
"custodians" = @(emailId = "emailaddress@place.com"),
"Action" = "add"
}
$uri = "https://thisisanaddress.com"
Invoke-RestMethod -Method 'POST' -Uri $uri -Headers $headers -Body $body
$body = @{
custodians = @(
@{emailId = 'emailaddress@place.com' }
@{emailId = 'emailaddress@place.com' }
@{emailId = 'emailaddress@place.com' }
)
Action = 'add'
}
$body | ConvertTo-Json
{
"Action": "add",
"custodians": [
{
"emailId": "emailaddress@place.com"
},
{
"emailId": "emailaddress@place.com"
},
{
"emailId": "emailaddress@place.com"
}
]
}