使用PowerShell

时间:2018-08-31 00:37:06

标签: json powershell

我有多个.json文件,我想使用PowerShell进行串联或附加。我希望下一个继续下去。为了简单起见,我将显示一个我想合并的两个文件的示例。

File1.json

[
    {
        "ItemID":  10746,
        "CompanyID":  3694,
        "Company":  "Sweet Mamma",
        "SRP":  0.0001,
        "UPC":  "9076625"
    },
    {
        "ItemID":  10761,
        "CompanyID":  3694,
        "Company":  "Sweet Mamma",
        "UPC":  "6128021"
    } ]

File2.json

[
    {
        "ItemID":  477761,
        "CompanyID":  4398,
        "Company":  "Moonlight",
        "UPC":  "4000308"
    },
    {
        "ItemID":  477761,
        "CompanyID":  4398,
        "Company":  "Moonlight",
        "SRP":  14.6500,
        "UPC":  "099904000308"
    }
]

我知道我可以在Powershell中使用以下语法来连接两个json文件。

获取内容“ C:\ File1.json”,“ C:\ File2.json” |设置内容“ C:\ CombinedOutput.json”

但是,当我执行此脚本时,我几乎得到了我所需要的东西,除了左和左括号(一个json文件结束,下一个开始)。这两个括号如下面示例中的中间部分所示,应将其删除并替换为上面示例中的逗号。

注意:我无法加粗显示,因此请在星号周围加注。

[
    {
        "ItemID":  10746,
        "CompanyID":  3694,
        "Company":  "Sweet Mamma",
        "SRP":  0.0001,
        "UPC":  "9076625"
    },
    {
        "ItemID":  10761,
        "CompanyID":  3694,
        "Company":  "Sweet Mamma",
        "UPC":  "6128021"
    }
**]**
**[**
    {
        "ItemID":  477761,
        "CompanyID":  4398,
        "Company":  "Moonlight",
        "UPC":  "4000308"
    },
    {
        "ItemID":  477761,
        "CompanyID":  4398,
        "Company":  "Moonlight",
        "SRP":  14.6500,
        "UPC":  "099904000308"
    }
]

重申一下,这些括号...

]
[

...应替换为逗号。

,

然后,所需的输出文件将如下所示,甚至将几个json文件合并为一个文件,仍然可以使其像一个连续的json文件一样正常流动。

[
    {
        "ItemID":  10746,
        "CompanyID":  3694,
        "Company":  "Sweet Mamma",
        "SRP":  0.0001,
        "UPC":  "9076625"
    },
    {
        "ItemID":  10761,
        "CompanyID":  3694,
        "Company":  "Sweet Mamma",
        "UPC":  "6128021"
    },
    {
        "ItemID":  477761,
        "CompanyID":  4398,
        "Company":  "Moonlight",
        "UPC":  "4000308"
    },
    {
        "ItemID":  477761,
        "CompanyID":  4398,
        "Company":  "Moonlight",
        "SRP":  14.6500,
        "UPC":  "099904000308"
    }
]

1 个答案:

答案 0 :(得分:2)

这实际上很容易,因为它们都是数组:

$js1 = Get-Content -Path .\file1.json -Raw |
    ConvertFrom-Json
$js2 = Get-Content -Path .\file2.json -Raw |
    ConvertFrom-Json

$js1 + $js2 |
    ConvertTo-Json -Depth 5 |
    Out-File -FilePath .\combinedfiles.json

PowerShell可以在此处本地连接数组。