2015-05-11 5 views
0

У меня есть пример файла Json, как это. Как извлечь данные из него?извлечение json с помощью jq

Я попытался несколько things.But не смогли получить желаемый результат

{ 
    "adults":{ 
       "car":{"length":[20,25],"width":[225,40]}, 
       "tractor":{"length":[20,23],"width":[223,40]} 
      }, 
    "children":{ 
       "cycle":{"length":[20,21],"width":[221,40]}, 
       } 
} 

Я хочу, чтобы вставить эти данные в базу данных со следующими столбцами:

age_group | автомобиль | Измерения

Так что мой финальный стол будет

age_group | vehicle | measurements 
------------------------------------ 
adults  car   {"length":[20,25],"width":[225,40]} 
adults  tractor  {"length":[20,21],"width":[223,40]} 
children cycle  {"length":[20,21],"width":[221,40]} 

Как я могу извлечь информацию из объекта JSON в текстовый файл в соответствии с требованиями, используя JQ?

Редактировать: как получить внутренние ключи, как требуется ниже?

age_group | vehicle | Dimension 
    ------------------------------------ 
    adults  car   length 
    adults  car   width 

    adults  tractor  length 
    adults  tractor  width 
    children cycle  length 
    children cycle  width 

ответ

1

jq 'to_entries | map (.key as $ mykey | .value | to_entries | map ([$ mykey, .key, .value])) | добавить 'test.json

  1. преобразовать объект JSON в стандартной форме JQ
  2. запомнить ключ мы синтаксический анализ
  3. значение синтаксического анализа объекта JSON
  4. выход конструкция

обновление: jq 'to_entries | map (.key as $ mykey | .value | to_entries | map (.key as $ mykey2 | .value | to_entries | map ([$ mykey, $ mykey2, .key]))) | добавить | add 'test.json

jq предлагает два вида инструментов, которыми мы можем манипулировать json-файлами. Во-первых, мы можем фильтровать данные в json-файле, но фильтрация может потерять данные. Во-вторых, мы можем отображать и уменьшать данные.

Итак, сначала мы должны превратить вашу переменную json в фиксированную структуру, к которой мы можем получить доступ к ее паре ключей и значений. После этого мы используем фильтр для извлечения данных из поля значений. Поскольку вы предоставили json-файл, вложенный в 3 переменные dict, поэтому мы должны сделать три раза, чтобы преобразовать переменную json в фиксированную поданную.

+0

спасибо .. Можете ли вы предложить мне также отредактированный вопрос. – starkk92

+0

решение добавлено для обновления. – nobody0day

Смежные вопросы