在 JSON 中使用 Powershell 变量

Use Powershell variable in JSON

我正在尝试通过 powershell 中的函数传递参数,但它不起作用

代码

function test($test1, $test2)
{
 $details = @"
{ "updateDetails": [
    {
        "customer": "John",
        "rank": $test1
    },
    {
        "school": "western",
        "address": $test2
    }
    ]
}
"@
return $details
}
test 0 florida

当前问题

{ "updateDetails": [
    {
        "customer": "John",
        "rank": 
    },
    {
        "school": "western",
        "address": florida
    }
    ]
}

我尝试了 运行 测试,但没有在详细信息中填写值 0 json,佛罗里达州填写正确。我怎样才能替换这两个值。还有佛罗里达怎么能在字符串

您的代码完全没问题。我 运行 你的例子,它按预期工作。也许您错过了更新功能。关闭 shell 然后重试。

要将 "florida" 包含为字符串,您可以简单地在变量 "$test2" 周围添加引号,或者更安全:使用 ConvertTo-Json 输出正确引用和转义的 JSON字符串:

function test {
    param ([int]$rank, [string]$address)
    return @"
    { "updateDetails": [
        {
            "customer": "John",
            "rank": $rank
        },
        {
            "school": "western",
            "address": $(ConvertTo-Json $address)
        }
        ]
    }
"@
}
test 0 florida

0 为我填写,但佛罗里达州没有引号,这是无效的 JSON。 为了让生活更轻松一些,而不是构建一个 here-string,考虑构建一个对象并使用 built-in cmdlet ConvertTo-Json.

将其转换为 JSON

在这个例子中,我将向您展示如何使用哈希表来做到这一点

function test($test1, $test2)
{
 $details = @{ 
 "updateDetails"= 
 @(
    @{
        "customer" = "John"
        "rank" = $test1
    },
    @{
        "school" = "western"
        "address" = $test2
    }
    )
}

return $details | ConvertTo-Json
}

test 0 florida

输出

{
    "updateDetails":  [
                          {
                              "customer":  "John",
                              "rank":  0
                          },
                          {
                              "school":  "western",
                              "address":  "florida"
                          }
                      ]
}