jq将数据重塑为平面json

时间:2019-03-19 17:12:06

标签: arrays json jq

我正在处理一些要插入到SQL数据库中的json数据。数据来自Google Cloud Firestore

输入:

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

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

所需的输出,我不想将字段存储在id主体中,而是要将ID与其他字段一起保存在平面对象中

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

非常感谢

2 个答案:

答案 0 :(得分:2)

或者,使用 jtc unix实用工具来实现Asking的方法之一是:

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 :(得分:1)

这可以使用to_entries*运算符完成:

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