我有像这样的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)
有没有简单的方法可以做到这一点?
答案 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"
}
]
}
]
}