如何在 powershell 中将 JSON 键和值捕获为数组

How to capture JSON key and values as an array in powershell

我有一个来自 api 调用的 json 输出,部分如下所示。 作为此 json 的一部分,列出了许多 id 和 name 值。现在,我想将 id 和 name 对一起捕获为一个数组,作为程序中某些步骤的一部分,我得到 return ed with name ,我想将这个名字与之前存储在数组中的名字和 return 对应的id值进行比较。 因为我必须将此 id 值传递给另一个 rest api 调用。

有人可以帮助我如何通过 powershell 捕获这个数组吗?

$Json = '{
    "value": [
        {
            "id": "1",
            "name": "datafactory.git",
            "size": 0,
            "remoteUrl": "",
            "sshUrl": "",
            "webUrl": "",
            "isDisabled": false
        },
        {
            "id": "2",
            "name": "datafactory",
            "defaultBranch": "refs/heads/main",
            "size": 13569,
            "remoteUrl": "",
            "sshUrl": "",
            "webUrl": "",
            "isDisabled": false
        },
    ]
}'

我会为此创建一个 hash table

($Json |ConvertFrom-Json).Value |ForEach-Object {
    $HashTable = @{}
} {
    $HashTable[$_.name] = $_.id
}

用法:

$HashTable.datafactory
2

您还可以考虑引用完整的值 属性 对象(而不仅仅是 id):

($Json |ConvertFrom-Json).Value |ForEach-Object {
    $HashTable = @{}
} {
    $HashTable[$_.name] = $_
}

用法:

$HashTable.datafactory.id
2

$HashTable.datafactory.size
13569