#json #powershell
#json #powershell
Вопрос:
** Ребята, мне сказали: «В теле вашего сообщения вы не передаете друзей в виде массива», фактический JSON: как только я переведу этот JSON в формат powershell, я планирую вызвать запрос get, как показано ниже.
{"friends":[{"friendId":"abc1234-456Yes-repeat"}],"wowMorefriends":{"morefriendsId":{"hmmmMoreFriendsId":"09876tyuhtre-repeated"}},"callMe":0,"param":{}}
Powersellcode:
$Data = @{
friends = @{"friendId" = "abc1234-456Yes-repeat"}
wowMorefriends = @(
@{
"morefriendsId" = @{"hmmmMoreFriendsId" = "09876tyuhtre-repeated"}
"callMe" = 0
"param" = {}
}
)
}
$JsData = $Data | ConvertTo-Json -Compress
$JsData
Invoke-WebRequest -Method Post -Uri "https://App1.Callingmyfriends.com/api/callactions/run" -Body $JsData -ContentType 'application/json' -WebSession $cookieSession -Headers $requestHeaders -UseBasicParsing
Я делаю что-то не так?
Ответ №1:
Если friends
должен быть массив объектов, вы бы хотели установить его так же, как вы установили wowMoreFriends
, в @()
. Также вам необходимо установить параметр в @{}
, а не {}
, иначе у вас возникнут проблемы в зависимости от используемой вами версии Powershell.
$Data = @{
friends = @(
@{
"friendId" = "abc1234-456Yes-repeat"
}
)
wowMorefriends = @(
@{
"morefriendsId" = @{"hmmmMoreFriendsId" = "09876tyuhtre-repeated"}
"callMe" = 0
"param" = @{}
}
)
}
Но в дополнение к этому, morefriendsId
была превышена ConvertTo-Json
максимальная глубина по умолчанию. Таким образом, вам также нужно будет установить большую глубину через -Depth
, например:
$JsData = $Data | ConvertTo-Json -Compress -Depth 4