所以我在这里有一个问题,我似乎无法弄清楚如何更新对象中的数据值
因此,例如说FOLLOWING json
{ "People": 263, "Hungry": true, "Fruits": { "Apples": 1 "Oranges": 2 }, "Places": { "Places": [{ "Baskets": "true", "name": "Room 1", "candycount": 1500, "candytypespresent": { "candies": [ "caramel" ] } }, { "Baskets": "false", "name": "Room 2", "candycount": 2000, "candytypespresent": { "candies": [ "caramel", "jawbreaker", "butterscotch" ] } } ] } }
我让Powershell顺利阅读 convertfrom-json
convertfrom-json
我将如何执行以下操作:
A)将“橙色”从“ 2”更改为“ 100”
B)第2会议室中的“篮子”从“假”到“真”
C)在“房间1”的“糖果”中添加“泡泡糖”
我如何在不重写整个json或对象的情况下更新它 ?
JSON成为带有嵌套对象的自定义对象,因此实际上非常简单。首先,让我们通过在Apples值后面添加逗号来修复JSON,然后将其转换为对象…
$JSON = @' { "People": 263, "Hungry": true, "Fruits": { "Apples": 1, "Oranges": 2 }, "Places": { "Places": [ { "Baskets": "true", "name": "Room 1", "candycount": 1500, "candytypespresent": { "candies": [ "caramel" ] } }, { "Baskets": "false", "name": "Room 2", "candycount": 2000, "candytypespresent": { "candies": [ "caramel", "jawbreaker", "butterscotch" ] } } ] } } '@ | ConvertFrom-JSON
然后,如果我们要将Oranges从2更新为100,我们只需更改值即可:
$JSON.Fruits.Oragnes = 100
类似地,我们可以通过简单地列出场所,将其传递给Where语句以获取正确的房间并修改其值来修改Room 2 ForEach。
Where
ForEach
$JSON.Places.Places | Where{$_.name -eq 'Room 2'} | ForEach{$_.Baskets = 'true'}
最后,由于candies在JSON中定义为数组,因此我们可以简单地将所需的糖果添加到数组中。
candies
$JSON.Places.Places | Where{$_.name -eq 'Room 1'} | ForEach{$_.CandyTypesPresent.candies += 'bubblegum'}