We’re building a website using the Pentaho CTools library, which has a graphical dashboard editor which writes out JSON-format files for part of the dashboard.
I’d like to apply a transform to these files before check-in to git in order to sort them by key and then by the value of certain keys. The purpose is to make diffs easier, since the editor has a habit of rearranging all of the json fields.
For example, we might have something like this:
{ "components": { "rows": [ { "id": "CHARTS", "name": "Charts", "parent": "UnIqEiD", "properties": [ { "name": "Group", "type": "Label", "value": "Charts" } ], "type": "Label", "typeDesc": "<i>Group</i>" }, { "id": "kjalajsdjf", "meta_cdwSupport": "true", "parent": "CHARTS", "properties": [ { "name": "name", "type": "Id", "value": "Value1" }, { "name": "title", "type": "String", "value": "Value2" }, { "name": "listeners", "type": "Listeners", "value": "[]" }, ...
We are able to jq --sort-keys
(http://stedolan.github.io/jq/) to sort all of the keys, but I’m struggling to find out how to use the sort_by
function to then sort certain specific elements by the value of certain keys (so, in the example above, sorting by properties.name
for example. Any ideas?