Pentaho CToolsライブラリを使用してWebサイトを構築しています。PentahoCToolsライブラリには、ダッシュボードの一部のJSON形式ファイルを書き込むグラフィカルダッシュボードエディタがあります。
キーで、次に特定のキーの値でソートするために、gitにチェックインする前にこれらのファイルに変換を適用したいと思います。エディターにはすべてのjsonフィールドを再配置する習慣があるため、目的は差分を簡単にすることです。
たとえば、次のようなものがあります。
{
"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": "[]"
},
...
jq --sort-keys
( http://stedolan.github.io/jq/ )すべてのキーをソートしますが、sort_by
関数は、特定のキーの値で特定の特定の要素をソートします(したがって、上記の例では、properties.name
例えば。何か案は?
OK IRCチャンネルで助けを借りて、答えを見つけました。
基本的には次のようになります。
> jq '.components.rows|=sort_by(.id)|.components.rows[].properties|=sort_by(.name)' file.json > out.json
したがって、適切なオブジェクトを選択し、必要に応じて配列を調べてから、sort_byが単一の値を取るだけです(失敗したsort_by(.components.rows.id)
を試していました)。
|の代わりに| =値を取り除く代わりに値を渡します。