为 Powershell Post 正确格式化 JSON? (哈希文字中的键后缺少“=”运算符。)

Correctly format JSON for Powershell Post? (Missing '=' operator after key in hash literal.)

我正在尝试使用 Powershell 执行一些“POST”请求。但是,我似乎无法正确设置 JSON 的格式。我该如何实现?

>> $JSON=@{name:"TestName"}
>> Invoke-WebRequest -Uri http://localhost:7071/api/HttpTrigger1 -Method POST -Body $JSON
>> $response = Invoke-WebRequest -Uri "http://localhost:7071/api/HttpTrigger1" -Method Post -Body $JSON -ContentType "application/json"

ParserError:
Line |
   1 |  $JSON=@{name:"TestName"}
     |              ~
     | Missing '=' operator after key in hash literal.

因此,您可以通过两种方式执行此操作:

第一个,正如圣地亚哥所建议的,是

$json = '{name:"TestName"}'
$response = Invoke-WebRequest -Uri "http://localhost:7071/api/HttpTrigger1" `
  -Method Post -Body $json -ContentType "application/json"

第二种(大致)使用您所使用的语法,是

#create a Powershell object (note the use of '=' instead of ':' for assignment)
#(such a simple example is not an improvement over the example above)
$json = @{ name = "TestName" } | ConvertTo-JSON 
$response = Invoke-WebRequest -Uri "http://localhost:7071/api/HttpTrigger1" `
  -Method Post -Body $json -ContentType "application/json"

第一种方法当然更干净、更直接。当请求的源数据是操作 Powershell 对象的结果,并且您希望将它们转换为在 Web 请求中使用时,第二个很有用。