2017-07-12 33 views
0

所以,我在這裏有一個有點問題,我似乎無法弄清楚如何在一個對象PowerShell的:如何更新/替換JSON數據和值以及XML對象

所以更新數據值讓說,例如下面的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室從 「假」 「籃子」 爲 「true」

C)添加 「泡泡糖」 到 「糖果」, 「桔子」在Room1中

如何在不重寫整個json或對象的情況下更新這個?

回答

1

JSON成爲一個帶有嵌套對象的自定義對象,所以真的很簡單。首先,讓我們由蘋果值之間用逗號隔開修復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語句來得到正確的房間修改2客房,並在ForEach循環修改的值。

$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'} 
+0

AAAAAAH它是那麼簡單......只是一個管道'foreach'!我嚴重地狹隘地尋找並試圖過度設計這個......謝謝 – AdilZ

相關問題