Ich verwende PowerShell, um eine POST
Anfrage an eine REST API
zu senden. Der Körper der Anfrage sieht wie folgt aus:Wie kann ich eine HashTable korrekt in PowerShell in JSON konvertieren?
{
"title": "game result",
"attachments": [
{
"image_url": "http://contoso/",
"title": "good work!"
},
{
"fields": [
{
"title":"score",
"value":"100"
},
{
"title":"bonus",
"value":"50"
}
]
}
]
}
Nun wird das folgende Powershell-Skript die falsche Ausgabe erzeugt:
$fields = @(@{title='score'; value='100'},@{title='bonus'; value='10'})
$fieldsWrap = @{fields=$fields}
#$fieldsWrap | ConvertTo-Json
$attachments = @(@{title='good work!';image_url='http://contoso'},$fieldsWrap)
$body = @{title='game results';attachments=$attachments}
$json = $body | ConvertTo-Json
$json
Linie 3 (wenn unkommentiert) erzeugt die korrekte Ausgabe jedoch Linie 7 erzeugt:
{
"attachments": [
{
"image_url": "http://contoso",
"title": "good work!"
},
{
"fields": "System.Collections.Hashtable System.Collections.Hashtable"
}
],
"title": "game result"
}
Es schreibt offenbar aus dem Typnamen der 012., das ist die Standard ToString()
Implementierung ich nehme an.
Wie bekomme ich die richtige Ausgabe?
So hilfreich! Ich habe eine PowerShell-Aktivität für ein grafisches Runbook von Azure OMS Automation geschrieben, um eine Nachricht an einen Slack-Kanal zu senden. –