Разделить большой JSON-файл с хэш-структурой на несколько небольших файлов

Я работаю с очень большим файлом 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 ответ

Решение

Мне удалось что-то приготовить с помощью JQ:

  • после проверки количества предметов $file имеет:

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

    jq -c "to_entries[$from:$to] | from_entries" < $file > $output
    
Другие вопросы по тегам