使用Json将块插入powershell

时间:2016-01-26 06:35:43

标签: json powershell

我有像这样的Json数据

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

我需要通过powershell向这个json文件添加一个书项,以获得最终结果,如

{
  "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) 

有没有简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分: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"
        }
      ]
    }
  ]
}