Проблема с объединением 2 JSON файлов в Powershell - PullRequest
1 голос
/ 07 августа 2020

Мне нужно объединить следующие 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 

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Если вы просто хотите объединить значения data и создать новый JSON со свойством data, вы можете сделать следующее:

$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
0 голосов
/ 07 августа 2020

Что вы можете сделать, если вам нужно только содержимое поля данных, тогда вы можете извлечь его в объект PSObject, объединить их и преобразовать обратно в JSON, если это нужный вам формат.

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


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

$data | ConvertTo-Json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...