Powershell: How to Update/Replace data and values in Json and XML Object
The JSON becomes a custom object with nested objects, so really it is fairly simple. To start, let's fix the JSON by adding a comma after the Apples value, and convert it to an object...
$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
Then if we want to update Oranges from 2 to 100 we simply change the value:
$JSON.Fruits.Oranges = 100
Similarly we can modify the Room 2 by simply listing the Places, passing it to a Where
statement to get the right room, and modify the value in a ForEach
loop.
$JSON.Places.Places | Where{$_.name -eq 'Room 2'} | ForEach{$_.Baskets = 'true'}
Lastly, since candies
is defined as an array in the JSON we can simply add the desired candy to the array.
$JSON.Places.Places | Where{$_.name -eq 'Room 1'} | ForEach{$_.CandyTypesPresent.candies += 'bubblegum'}