JQ преобразование данных в плоский JSON - PullRequest
0 голосов
/ 19 марта 2019

Я работаю с некоторыми данными JSON, которые я хотел бы вставить в базу данных SQL.Данные взяты из Google Cloud Firestore

Ввод:

{
  "0": {
    "filed1": "xxxx",
    "field": "zzzz"

  },
  "1": {
    "field1": "xxx",
    "filed2": "zzz"
  }
}

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

{
  {
    "id": 0,
    "filed1": "xxxx",
    "field": "zzzz"
  },
  {
    "id": 2,
    "field1": "xxx",
    "filed2": "zzz"
  }
}

Большое спасибо заранее

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

в качестве альтернативы, один из способов выполнить запрос с помощью jtc утилиты unix будет:

bash $ <file.json jtc -w[:] -i'[:]<K>k' -T'{ "id":{K} }' | jtc -w[:] -j
[
   {
      "field": "zzzz",
      "filed1": "xxxx",
      "id": 0
   },
   {
      "field1": "xxx",
      "filed2": "zzz",
      "id": 1
   }
]
bash $ 
1 голос
/ 19 марта 2019

Это можно сделать с помощью to_entries и оператора *:

jq 'to_entries | map({id: .key} * .value)' file.json
...