だから私はここで少し問題を抱えています、私はオブジェクトのデータ値を更新する方法を理解できないようです
たとえば、次の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
でスムーズに読み取らせます
次の方法を教えてください:
A)「オレンジ」を「2」から「100」に変更します
B)「偽」から「真」への部屋2の「バスケット」
C)Room1の「キャンディー」に「バブルガム」を追加する
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
次に、オレンジを2から100に更新する場合は、値を変更するだけです。
$JSON.Fruits.Oragnes = 100
同様に、場所を一覧表示し、それをWhere
ステートメントに渡して適切な部屋を取得し、ForEach
ループの値を変更するだけで、部屋2を変更できます。
$JSON.Places.Places | Where{$_.name -eq 'Room 2'} | ForEach{$_.Baskets = 'true'}
最後に、candies
はJSONの配列として定義されているため、目的のキャンディーを配列に追加するだけで済みます。
$JSON.Places.Places | Where{$_.name -eq 'Room 1'} | ForEach{$_.CandyTypesPresent.candies += 'bubblegum'}