I have been able to get this far.
json input, 'data.json':
[
{
"Selected": null,
"Family Name": "Jones",
"Couple Name": "Jones, Adam & Rachael Margaret",
"Family Phone": "404-4477",
"Family Email": "[email protected]",
"Family Address": "777 Aggies Court Kindly, California 95388 ",
"Head Of House Name": "Jones, Adam",
"Head Of House Phone": "(583) 404-2488",
"Head Of House Email": "[email protected]",
"Spouse Name": "Jones, Rachael Margaret",
"Spouse Phone": null,
"Spouse Email": null,
"Child Name": null,
"Child Phone": null,
"Child Email": null
},
{
"Selected": "x",
"Family Name": "Xiong",
"Couple Name": "Xiong, Arlene Frances",
"Family Phone": null,
"Family Email": null,
"Family Address": "888 Walnut Ave. Blatant, California 95388 ",
"Head Of House Name": "Xiong, Arlene Frances",
"Head Of House Phone": "583-500-7917",
"Head Of House Email": "[email protected]",
"Spouse Name": null,
"Spouse Phone": null,
"Spouse Email": null,
"Child Name": null,
"Child Phone": null,
"Child Email": null
},
{
"Selected": "x",
"Family Name": "Blair",
"Couple Name": "Blair, Toby & Silvia",
"Family Phone": "358-4645",
"Family Email": null,
"Family Address": "333 Cindy St. Stoic, California 95388 ",
"Head Of House Name": "Blair, Toby",
"Head Of House Phone": null,
"Head Of House Email": "[email protected]",
"Spouse Name": "Blair, Silvia",
"Spouse Phone": null,
"Spouse Email": null,
"Child Name": null,
"Child Phone": null,
"Child Email": null
}
]
I can use this to filter:
cat data.json | jq '.[] | select(.Selected != null) | {"Head Of House Name", "Head Of House Phone", "Head Of House Email", "Family Phone", "Family Email"}'
The results:
{
"Head Of House Name": "Xiong, Arlene Frances",
"Head Of House Phone": "583-500-7917",
"Head Of House Email": "[email protected]",
"Family Phone": null,
"Family Email": null
}
{
"Head Of House Name": "Blair, Toby",
"Head Of House Phone": null,
"Head Of House Email": "[email protected]",
"Family Phone": "358-4645",
"Family Email": null
}
Notice there are no array brackets around the array of objects and no comma between the objects... indicating the result is not an array.
The problem is that the result is not an array of objects (frankly, I'm not sure what it is). How can I start with an array of json objects, filter them and end up with a filtered list of objects?
cat data.json | jq '.[] | select(.presetName == "presetOne")' > "presetOne.json"