Разбор JSON с Powershell в CURL - PullRequest
       0

Разбор JSON с Powershell в CURL

0 голосов
/ 06 июля 2019

Привет. Я пытаюсь выполнить приведенные ниже способы запуска вызова POST в Power Shell.

опция 1:

$Body="{ \`"cartItem\`" : {\`"sku\`" : \`"RG1219013\`", \`"qty\`" : \`"1\`",  \`"quoteId\`" : \`"QRAeZdoFbieEWHjrRs5X0G1tHRE4el30\`"  }}"

опция 2:

$Body=@"
{ \"cartItem\" : {\"sku\" : \"RG1219013\", \"qty\" : \"1\",  \"quoteId\" : \"QRAeZdoFbieEWHjrRs5X0G1tHRE4el30\"  }}
"@

опция3:

$Body = @{
    cartItem =
    {
        sku = 'RG1219013'
        qty = '1'
        quoteId = 'QRAeZdoFbieEWHjrRs5X0G1tHRE4el30'
    }
} 

$Json = (ConvertTo-Json $Body)

Выполнить:

$Header = @{ "Content-Type" = "application/json" }
Invoke-RestMethod -Method Post -Body $Body -Uri $UriAddtoCart -Header $Header

В option 1 и option 2 Я получаю неверный запрос (400) и option 3 это внутренняя ошибка (500)

Ниже Джейсон успешно отвечает через почтальона

{
    "cartItem" :
    {
        "sku" : "RG1219013",
        "qty" : "1",
        "quoteId" : "QRAeZdoFbieEWHjrRs5X0G1tHRE4el30"
    }
}

Чего здесь не хватает?

1 Ответ

1 голос
/ 06 июля 2019

В файле Json отсутствует знак @ после cartItem = в варианте 3 (таким образом функция присваивается свойству cartItem, а не HashTable)
Это станет понятным, если вы выведете файл $Json (например, Write-Host $Json).

Таким образом:

$Body = @{
    cartItem =
    {
        sku = 'RG1219013'
        ...

Должно быть:

$Body = @{
    cartItem =
    @{
        sku = 'RG1219013'
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...