サブプロパティの値に基づいてオブジェクトのプロパティをjmespathにフィルタリングしようとしていて、サブプロパティが特定の値に設定されているプロパティのみを含める必要があります。この例のデータに基づいてjmespathのキーでオブジェクトをフィルタリングして選択します
:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
私は機能が有効になっているすべてのプロパティを持つオブジェクトを取得したいのですが。
{
"a": {
"feature": {
"enabled": true,
}
}
}
私はproperty. enabled
がtrueに設定されているオブジェクトをフィルタリングするために、このjmespathクエリを使用することができます考え出しました。 Unfortunateley、それは動作していない代わりに空の配列を返します。
*[?feature.enabled==`true`]
*.feature.enabled
または*[feature.enabled]
復帰任意のコンテキストなしでちょうどブール値。 *[?feature.enabled==
真]
がうまくいく場合でも
は、それだけでプロパティ値の配列になりますが、私は、キー(a
とc
)aswellを必要としています。これをjmespathで実行する方法はありますか?
これは全て不可能なプレイブックの一部なので、別の方法(Jinja2テンプレートやカスタムプラグイン)で選択を達成する方法は確かにありますが、jmespathを試してみたいと思っていました。そのような仕事。
クエリ以外のものは、ネストされたデータに基づいて特定のキーを削除する必要があります。何か[このPerlの質問](http://stackoverflow.com/q/18660309/2947502)のようなものです。私もあなたがJMESPathでそれを行うことができるかどうかを知りたいと思います。 – techraf