【问题标题】:Problem with merging 2 JSON Files in Powershell在 Powershell 中合并 2 个 JSON 文件的问题
【发布时间】:2020-08-07 21:14:29
【问题描述】:

我必须合并以下 2 个 JSON 文件,因为我使用的 API 有 1000 个限制。

js1.json:

{
      "total":  1311,
      "limit":  1000,
      "offset":  0,
      "data":  [
          // 1000 Users
         ]
}

js2.json:

{
      "total":  1311,
      "limit":  1000,
      "offset":  1000,
      "data":  [
          // 311 Users
         ]
}

我需要什么:

{
      "data":  [
          // All 1311 Users
         ]
}

我看过一些帖子,您可以将 JSON 文件添加在一起。但最后我总是得到这个:

当前的 PS 代码:

 $js1 = Invoke-RestMethod 'API Request with offset 0' -Method 'GET' -Headers $headers -Body $body | ConvertTo-Json
 $js2 = Invoke-RestMethod 'API Reuqest with offset 1000' -Method 'GET' -Headers $headers -Body $body | ConvertTo-Json

 $js1 + $js2 | Out-File -FilePath .\cloudUsers.json 

【问题讨论】:

标签: json powershell


【解决方案1】:

如果您只想要数据字段的内容,您可以做什么,然后您可以将其提取到 PSObject 并将它们合并,然后将其转换回 JSON(如果这是您想要的格式)。

$json1 = (Get-Content .\js1.json | ConvertFrom-Json)
$json2 = (Get-Content .\js2.json | ConvertFrom-Json)


$data = $json1.data + $Json2.data

$data | ConvertTo-Json

【讨论】:

    【解决方案2】:

    如果您只想组合 data 值并使用 data 属性创建一个新 JSON,您可以执行以下操作:

    $js1 = Get-Content js1.json | ConvertFrom-Json
    $js2 = Get-Content js2.json | ConvertFrom-Json
    
    [pscustomobject]@{data = $js1.data + $js2.data} | ConvertTo-Json
    

    如果您想维护原始 JSON 架构,您可以相应地更新属性:

    $js1 = Get-Content js1.json | ConvertFrom-Json
    $js2 = Get-Content js2.json | ConvertFrom-Json
    
    $js1.limit = $js1.total
    $js1.data += $js2.data
    $js1 | ConvertTo-Json
    

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      相关资源
      最近更新 更多