Powershell объединяет 2 разных файла JSON - PullRequest
0 голосов
/ 22 апреля 2020

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

Файл 1:

{
    "count":  1,
    "results":  [
                    {
                        "key":  "card_sets",
                        "id":  "551175"
                    }
                ],
    "card_sets":  {
                           "551175":  {
                                          "title":  "Title",
                                          "account_default":  false,
                                          "active_currencies":  "EUR",
                                          "default_currencies":  "EUR GBP",
                                          "destroyable":  true,
                                          "created_at":  "2020-04-20T08:09:15-07:00",
                                          "updated_at":  "2020-04-20T08:09:15-07:00",
                                          "id":  "551175"
                                      }
                       },
    "meta":  {
                 "count":  1,
                 "page_count":  1,
                 "page_number":  1,
                 "page_size":  200
             }
}

Файл 2:

{
    "count":  1,
    "results":  [
                    {
                        "key":  "cards",
                        "id":  "847355"
                    }
                ],
    "cards":  {
                       "847355":  {
                                      "currency":  "EUR",
                                      "created_at":  "2020-04-20T08:09:15-07:00",
                                      "updated_at":  "2020-04-20T08:09:15-07:00",
                                      "card_set_id":  "551175",
                                      "id":  "847355"
                                  }
                   },
    "meta":  {
                 "count":  1,
                 "page_count":  1,
                 "page_number":  1,
                 "page_size":  200
             }
}

Для ясности Я уменьшил выход.

Чего я хочу добиться, так это соединить эти два файла вместе, где у них есть соответствующие идентификаторы.

Ключ файла 1 будет card_sets. {Id} .id

Файл 2 ключом будут карточки. {id} .card_set_id

Меня не волнует какой-либо результат в элементах count / results / meta, но я надеюсь собрать список, который выглядит как

File1.id, File1.title, File1.active_currencies, File2.id, File2.currency

Я работаю с PowerShell всего полтора дня и только что получил JSON файлы были большим шагом для меня, но все поиски Google, которые я могу найти до сих пор, основаны на идентичных json файлах, которые объединяются в один. Это кажется немного сложнее, и на данный момент я в тупике.

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете попробовать следующее:

$json1 = Get-Content file1.json | ConvertFrom-Json
$json2 = Get-Content file2.json | ConvertFrom-Json
$cardsets = $json1.card_sets | Select-Object -Expand *
$cards = $json2.cards | Select-Object -Expand *

foreach ($cardset in $cardsets) {
    $card = $cards | Where card_set_id -eq $cardset.id
    if ($cardset.id -in $cards.card_set_id) {
        [pscustomobject]@{
            'File1.id' = $cardset.id
            'File1.title' = $cardset.title
            'File1.active_currencies' = $cardset.active_currencies
            'File2.id' = $card.id
            'File2.currency' = $card.currency
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...