我在将Windows中正在运行的cURL命令转换为等效的PowerShell InvokeRestMethod命令时遇到了问题。看起来我已经很接近了。我得到了一个回应。但是,该应用编程接口似乎不理解InvokeRestMethod命令发送的嵌套哈希表元素域“”。所有其他散列元素似乎都可以被API很好地识别。
cURL命令(工作中)
curl "https://api.rebrandly.com/v1/links" -X POST -H "apikey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -H "Content-Type: application/json" -d "{ \"destination\": \"http://longurl.com\", \"domain\": {\"fullName\": \"link.domain.com\"}}"
PowerShell:
$body = @{
"destination"="longurl.com"
"domain" = @("fullName", "link.domain.com")
} | ConvertTo-Json
$header = @{
"apikey"="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
"Content-Type"="application/json"
}
Invoke-RestMethod -Uri "https://api.rebrandly.com/v1/links" -Method 'Post' -Body $body -Headers $header
PS:我也试过使用下面的语法。不幸的是,我得到了同样的结果..其中"domain“散列元素被忽略。
$body = @{
"destination"="longurl.com"
"domain[0]" = "fullName"
"domain[1]" = "link.domain.com"
} | ConvertTo-Json
发布于 2019-06-13 03:37:08
当您使用JSON方括号时,它被解释为数组,而不是键值哈希表,后者在@(...)
中将被转换为[...]
数组。只需将嵌套语句中的方括号替换为@{...}
花括号即可表示哈希表:
$body = @{
"destination"="longurl.com"
"domain" = @{"fullName" = "link.domain.com"}
} | ConvertTo-Json
这将导致匹配的JSON:
{
"destination": "longurl.com",
"domain": {
"fullName": "link.domain.com"
}
}
https://stackoverflow.com/questions/56568524
复制相似问题