gpt4 book ai didi

json - 使用PowerShell将成员附加到JSON中的数组

转载 作者:行者123 更新时间:2023-12-03 00:58:22 25 4
gpt4 key购买 nike

我需要使用Powershell将数据插入数组中的json文件中。这是json的原始结构

{
"Array": [
{
"servername": "foo"
},
{
"servername": "boo"
}
]
}

这是新结构:
   {
"Array": [
{
"servername": "Foo",
"Disk": "100"
},
{
"servername": "Boo",
"Disk": "500"
}
]
}

为什么这不起作用?
$json = @"
{
"Array": [
{
"servername": "Foo"
},
{
"servername": "Boo"
}
]
}
"@

$jsonServerFoo=@"
{
"Disk": "100"
}
"@

$jsonServerBoo=@"
{
"Disk": "500"
}
"@

$jsonObj = $JSON | ConvertFrom-Json
$jsonServerFooObj = $jsonServerFoo | ConvertFrom-Json
$jsonServerBooObj = $jsonServerBoo | ConvertFrom-Json
$i = 1
$jsonObj.Array | Foreach-object {
if ( $i -eq 1 ) {
$_ | Add-Member -MemberType NoteProperty -Name "Disk" -Value $jsonServerFooObj.Disk
$i++
}
else {
$_ | Add-Member -MemberType NoteProperty -Name "Disk" -Value $jsonServerBooObj.Disk
}
}
$jsonObj
$jsonObj | ConvertTo-Json -Depth 100

我得到想要的输出
{
"Array": [
{
"servername": "Foo",
"Disk": "100"
},
{
"servername": "Boo",
"Disk": "500"
}
]
}

最佳答案

使用Add-Member将成员添加到PSCustomObject中。 ConvertFrom-Json返回PSCustomObject,而不是Hashtable

$jsonObj | Add-Member -MemberType NoteProperty -MemberName MyPropertyName -Value "some value, doesn't have to be a string"

您也不必使用基本的 $jsonObj,也可以将成员添加到 $jsonObj的嵌套成员中。您的情况下,使用 Array成员:
$jsonObj.Array | Foreach-object {
if( $i -eq 1 ) {
$_ | Add-Member -MemberType NoteProperty -Name Disk -Value $jsonServerFooObj.Disk
$i++
} else {
$_ | Add-Member -MemberType NoteProperty -Name Disk -Value $jsonServerBooObj.Disk
}
}

您可能还需要考虑调用 ConvertTo-Json -Depth 100,这样您就不会得到默认的对象深度很低的3,我认为。

如@ user2864740所述,在PowerShell 6中,如果您宁愿使用 ConvertFrom-Json而不是 -AsHashtableHashtable具有 PSCustomObject参数。

关于json - 使用PowerShell将成员附加到JSON中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com