如何从此 JSON 响应中获取以下值?

How do I get the following value out of this JSON response?

基本上,我有一个使用 Powershell 从 DynamoDB 检索到的值,并且得到了 JSON 格式的一行,如下所示

      function gettagsfromdynamo() {
        $table_name = "table_name"
        $dbkey = '{"ReleaseId":{"AttributeValueList":[ {"N":"1"} ],"ComparisonOperator": "EQ"}}' | ConvertTo-Json -Compress
        $dbvalue = aws dynamodb query --table-name $table_name --key-conditions $dbkey --region $region
        $latest_tags = $dbvalue
        $latest_tags
      }
     
      $db_tags = gettagsfromdynamo

这就是db_tags的样子

{
    "Items": [
        {
            "Comment": {
                "S": "The first PC release."
            },
            "Product": {
                "S": "PC"
            },
            "ReleaseId": {
                "N": "1"
            },
            "CreatedOn": {
                "S": "12/14/2020 15:23:32"
            },
            "Tags": {
                "S": "{\n    \"software1\": \"software1.zip\",\n    \"software2\": \"software2.zip\",\n    \"software3\":\n    [\n        \"software3.zip\",\n        \"software4.zip\",\n        \"software5.zip\"\n    ],\n    \" data1 \": \"2020_NA\",\n    \" 2020_EU \": \"20201_EU\",\n    \" 2020_WW \": \"2021_WW\",\n    \" dataversions\":\n    [\n        \"2020\",\n        \"2019\",\n        \"2018\",\n        \"2017"\n    ],\n    \" products \": \" \"\n}"
            }
        }
    ],
    "Count": 1,
    "ScannedCount": 1,
    "ConsumedCapacity": null
}

我想要完成的任务是能够获取“dataversions”值 --> [Items][Tags][Dataversions] 并将该值写入本地可用的 JSON 文件.我尝试了各种方法,包括使用 Convert-ToJson 和 ConvertFrom-Json.

标签 json 值看起来像这样,没有转义空格 (/n)

{
    "software1": "software1.zip",
    "software2": "software2.zip",
    "software3":
    [
        "software3.zip",
        "software4.zip",
        "software5.zip"
    ],
    " data1": "2020_NA",
    " 2020_eu ": "2020_EU",
    " 2020_ww": "2021_WW",
    " dataversions":
    [
        "2020",
        "2019",
        "2018",
        "2017"
    ],
    " products ": " "
}

如何检索 'dataversions' 的值,这是一个字符串列表。目前,我尝试了各种方法后只能得到这样的结果:

{"S":"{\n    \"software1\": \"software1.zip\",\n    \"software2\": \"software2.zip\",\n    \"software3\":\n    [\n        \"software3.zip\",\n        \"software4.zip\",\n        \"software5.zip\"\n    ],\n    \" data1\": \"2020_NA\",\n    \" 2020_EU\": \"20201_EU\",\n    \" 2020_WW\": \"2021_WW\",\n    \" dataversions\":\n    [\n        \"2020\",\n        \"2019\",\n        \"2018\",\n        \"2017\"\n    ],\n    \" products\": \" \"\n}"}

我希望能够获取数据版本的值,以便覆盖 example.json 文件中的另一个 'dataversions'。如何获取数据版本值并清理 \n?

在您的 JSON 文件中,属性 名称 " dataversions" 包含前导 space。当 JSON 字符串转换为自定义对象时(通过 ConvertFrom-Json),space 将包含在 属性 名称中。因此在使用成员访问(object.property)语法时必须考虑:

($db_tags | ConvertFrom-Json).' dataversions'