Formatting json data using jq Formatting json data using jq unix unix

Formatting json data using jq


Here is a solution:

  .[]| .Result = [      .elements[]    | .steps[]    | {stepName:.name, status:.result.status}  ]| del(.elements)

Here is a sample run assuming your data is in input.json:

$ jq '.[] | .Result = [.elements[] | .steps[] | {stepName:.name, status:.result.status}] | del(.elements)' input.json{  "name": "Successful retrieval",  "Result": [    {      "stepName": "as a customer",      "status": "passed"    },    {      "stepName": "I hit API",      "status": "passed"    },    {      "stepName": "API should respond",      "status": "passed"    }  ]}


This is just a minor variation on jq170727's answer.

The last step builds the object out of the parts you want rather than deleting the ones you don't want.

jq '.[]| .Result =  [       .elements[]     | .steps[]     | { stepName:.name, status:.result.status }  ]| { name, Result }'