将 JSON 数组拆分为多个文件

Dan*_*lan 7 files json jq

我有一个看起来像这样的文件:

[
  {
    "billingAccountNumber": "x",
    "paymentResponseObject": {
      "uiErrorDipslayMessage": "",
      "transactionStatus": "S",
      "transactionDescription": "",
      "transactionCode": "",
      "confirmationNumber": "1"
    }
  },
  {
    "billingAccountNumber": "y",
    "paymentResponseObject": {
      "uiErrorDipslayMessage": "",
      "transactionStatus": "S",
      "transactionDescription": "",
      "transactionCode": "",
      "confirmationNumber": "2"
    }
  },
  {
    "billingAccountNumber": "z",
    "paymentResponseObject": {
      "uiErrorDipslayMessage": "",
      "transactionStatus": "S",
      "transactionDescription": "",
      "transactionCode": "",
      "confirmationNumber": "3"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

数据看起来不像这样,我有三个以上的元素。从这个数据,我想创建三个文件:x.jsony.json,和z.json。我希望每个文件的内容都是paymentResponseObject.

有没有办法做到这一点jq?我已经想出了如何在awk. 我必须awk为每个模式重写 80% 的脚本。

jes*_*e_b 8

这个SO线程:

jq -cr 'keys[] as $k | "\($k)\n\(.[$k])"' input.json | while read -r key; do
  fname=$(jq --raw-output ".[$key].billingAccountNumber" input.json)
  read -r item
  printf '%s\n' "$item" > "./$fname"
done
Run Code Online (Sandbox Code Playgroud)