サブプロパティの値に基づいてjmespathのオブジェクトのプロパティをフィルタリングしようとしており、サブプロパティが特定の値に設定されているプロパティのみを含めたいと考えています。
この例のデータに基づいて:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
機能が有効になっているすべてのプロパティを持つオブジェクトを取得したいと思います。
{
"a": {
"feature": {
"enabled": true,
}
}
}
この jmespath クエリを使用して、property. enabled
が true に設定されているオブジェクトをフィルタリングできると考えました。残念ながら、動作していないようで、代わりに空の配列を返します。
*[?feature.enabled==`true`]
*.feature.enabled
または*[feature.enabled]
、コンテキストなしでブール値のみを返します。
*[?feature.enabled==
trueが機能したとしても]
、それは単なるプロパティ値の配列になりますが、キー (a
およびc
) も必要です。jmespathでこれを実現する方法はありますか?
これはすべて ansible プレイブックの一部であるため、別の方法 (Jinja2 テンプレートまたはカスタム プラグイン) で選択を実現する方法は確かにありますが、jmespath を試してみたかったので、そのようなタスクが可能であるべきだと考えました。