#json #powershell #amazon-dynamodb
#json #powershell #amazon-dynamodb
Вопрос:
В принципе, у меня есть извлеченные значения из DynamoDB с помощью Powershell, и я получил строку в формате 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», которое является —> [Элементы] [Теги] [Версии данных] и записать это значение в файл 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}"}
Я хочу иметь возможность получить значение dataversions для перезаписи другого «dataversions», который находится внутри файла example.json. Как мне получить значение dataversions, а также очистить n?
Комментарии:
1. Поскольку у вас есть начальный пробел
" dataversions"
, вам нужно будет использовать($db_tags | convertfrom-json).' dataversions'
.2. Черт возьми. Я ненавижу, когда мне нужно много времени, чтобы разобраться в мелочах. Спасибо. Если вы хотите, ответьте на вопрос, и я могу проверить его как правильный ответ.
3. Я добавил ответ. Спасибо
Ответ №1:
В вашем файле JSON имя свойства " dataversions"
содержит начальный пробел. Когда строка JSON преобразуется в пользовательский объект (через ConvertFrom-Json
), пробел будет включен в имя свойства. Поэтому это необходимо учитывать при использовании синтаксиса member access ( object.property
):
($db_tags | ConvertFrom-Json).' dataversions'