2016-01-26 3 views
0

У меня есть JSon данные, как этотВставка блока в Powershell с помощью JSon

{ 
    "Library": [ 
    { 
     "LibraryName": "John's Library",  
     "Books": [ 
     { 
      "BookId": "0000786", 
      "BookName": "BookA", 
     } 
     ] 
    } 
    ] 
} 

мне нужно добавить еще один книжный элемент для этого JSon файла с помощью PowerShell, чтобы получить конечный результат, как

{ 
    "Library": [ 
    { 
     "LibraryName": "John's Library",  
     "Books": [ 
     { 
      "BookId": "0000786", 
      "BookName": "BookA", 
     }, 
     { 
      "BookId": "0000788", 
      "BookName": "BookB", 
     } 
     ] 
    } 
    ] 
} 

Я попробовал следующий фрагмент, но, похоже, не добавил

$libraryFileContent = Get-Content $libraryFile 
$libraryData = $ser.DeserializeObject($libraryFileContent) 
$bookObject = (New-Object PSObject | 
    Add-Member -PassThru NoteProperty BookId '0000787' | 
    Add-Member -PassThru NoteProperty BookName 'BookB'  
) 
$libraryData.Library[0].Books | Add-Member (ConvertTo-JSON $bookObject) 

Есть ли простой способ сделать это?

ответ

2

Это один из тех, где вы думаете, что это должно быть намного сложнее, чем есть! Попробуйте это -

$json = @" 
{ 
    "Library": [ 
    { 
     "LibraryName": "John's Library",  
     "Books": [ 
     { 
      "BookId": "0000786", 
      "BookName": "BookA" 
     } 
     ] 
    } 
    ] 
} 
"@ 

$x = $json | ConvertFrom-Json 
$books = [PSCustomObject]@{"BookId" = "000788"; "Bookname" = "bookB"} 
$x.Library[0].Books += $books 

$x | ConvertTo-Json -Depth 4 

Который должен дать -

{ 
    "Library": [ 
    { 
     "LibraryName": "John's Library", 
     "Books": [ 
     { 
      "BookId": "0000786", 
      "BookName": "BookA" 
     }, 
     { 
      "BookId": "000788", 
      "Bookname": "bookB" 
     } 
     ] 
    } 
    ] 
} 
Смежные вопросы