首页 > 解决方案 > 在 cURL 中使用 Powershell 解析 json

问题描述

嗨,我正在尝试执行以下方法以在 power shell 中运行 POST 调用

选项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

我收到错误请求(400),option 1这是内部错误(500)option 2option 3

下面jason通过邮递员成功响应

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

这里有什么遗漏吗?

标签: powershellcurl

解决方案


Json 文件cartItem =在选项 3 之后缺少 @ 符号(这种方式将函数分配给cartItem属性而不是 HashTable)
如果您输出$Json文件(例如Write-Host $Json),这将变得清晰。

因此:

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

应该:

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

推荐阅读