我有以下输入-2个json文件,一个是基础文件,第二个包含相同的属性,但值不同,我想合并这些对象。
例如:
{ a:{ b:"asda" } c: "asdasd" }
第二个文件:
{ a:{ b:"d" } }
结果应该是这样的:
{a:{b:"d"},c:"asdasd"}
使用powershell可以做到吗?
$Json1 | Join $Json2 -Merge {$Right.$_} | ConvertTo-Json (请参见下面的更新)
$Json1 | Join $Json2 -Merge {$Right.$_} | ConvertTo-Json
($Json1 ConvertFrom-Json) | Merge ($Json2 ConvertFrom-Json) | ConvertTo-Json
结果:
{ "c": "asdasd", "a": { "b": "d" } }
您可能会考虑不覆盖左值:
($Json1 ConvertFrom-Json) | Join ($Json2 ConvertFrom-Json) | ConvertTo-Json
在这种情况下,结果将是:
{ "c": "asdasd", "a": [ { "b": "asda" }, { "b": "d" } ] }
更新2019年11月16日 的-Merge参数已经被耗尽,分过-Discern和-Property参数(遗憾的重大更改)。好消息是,对象合并的默认参数设置包含在名为Merge-Object(alias Merge)的代理命令中,该命令将相关语法简化为:$Object1 | Merge $Object2。有关详细信息,请参见自述文件或嵌入式帮助。
-Merge
-Discern
-Property
Merge-Object
Merge
$Object1 | Merge $Object2