Разделить большой JSON-файл с хэш-структурой на несколько небольших файлов - PullRequest
0 голосов
/ 22 января 2019

Я работаю с очень большим файлом JSON, который имеет хэш-подобную структуру:

{
  "1893": {
    "foo": {
      "2600": {
        ...[snip]...
      },
      "3520": {
        ...[snip]...
      }
    }
    "id": "foobar"
  },
  "123": {
    "bar": {
      "4989": {
        ...[snip]...
      },
      "0098": {
        ...[snip]...
      }
    }
    "id": "foobaz"
  },
  ...[snip]...
  "5553": {
    "baz: {
      "2600": {
        ...[snip]...
      },
      "3520": {
        ...[snip]...
      }
    }
    "id": "bazqux"
  }
}

(Этот файл похож на Файл отображения миграции Stripe )

Я хотел бы разбить этот файл на несколько меньших, которые, очевидно, являются допустимыми файлами JSON.Поскольку «root» - это хеш, мне все равно, как этот файл разбивается, если в полученных файлах примерно одинаковое количество элементов.

Я пытался посмотреть на JQ, но я нене понимаю, как правильно добиться этого.Буду признателен за любые рекомендации относительно работающего решения JQ или любые другие инструменты, которые могут помочь в этом.

1 Ответ

0 голосов
/ 22 января 2019

Мне удалось что-то приготовить, используя JQ:

  • после проверки количества элементов, которые $file имеет:

    jq -c "length" < $file
    
  • мы строим индексы для нарезки ($from и $to), затем сохраняем срез в $output:

    jq -c "to_entries[$from:$to] | from_entries" < $file > $output
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...