一尘不染

合并两个json对象

json

我有以下输入-2个json文件,一个是基础文件,第二个包含相同的属性,但值不同,我想合并这些对象。

例如:

{
  a:{
    b:"asda"
  }
  c: "asdasd"
}

第二个文件:

{
  a:{
   b:"d"
  }
}

结果应该是这样的:

{a:{b:"d"},c:"asdasd"}

使用powershell可以做到吗?


阅读 444

收藏
2020-07-27

共1个答案

一尘不染

$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。有关详细信息,请参见自述文件或嵌入式帮助。

2020-07-27