Dividir uma matriz json para vários arquivos

3

Eu tenho um arquivo assim:

[
  {
    "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"
    }
  }
]

Os dados não são exatamente assim e eu tenho mais de três elementos. Com esses dados, quero criar três arquivos: x.json , y.json e z.json . Eu quero que o conteúdo de cada um desses arquivos seja o conteúdo do paymentResponseObject .

Existe uma maneira de fazer isso com jq? Eu descobri como fazer isso no awk, mas é muito desajeitado e eu quero ser capaz de repetir esse processo com esquemas diferentes. Eu tenho que reescrever 80% do script awk para cada esquema.

    
por Daniel Kaplan 27.07.2018 / 21:11

1 resposta

4

De este tópico:

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
    
por 27.07.2018 / 21:26

Tags