Bir alt özelliğin değerine bağlı olarak jmespath nesnesindeki bir nesnenin özelliklerini filtrelemeye çalışıyorum ve yalnızca alt özelliğin belirli bir değere ayarlandığı özellikleri eklemek istiyorum. Bu örnek verilere dayanarakNesneye göre filtre nesnesini ve jmespath anahtarıyla seçin
:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
Ben özelliği etkin tüm özelliklere sahip bir nesne almak istiyorum.
{
"a": {
"feature": {
"enabled": true,
}
}
}
ben
property. enabled
true olarak ayarlanır nesneleri filtrelemek için bu jmespath sorgusu diye düşündüm. Unfortunateley, işe yaramaz gibi gözüküyor ve boş bir dizi döndürüyor.
*[?feature.enabled==`true`]
*.feature.enabled
veya herhangi bir kaynak gösterilmeksizin *[feature.enabled]
dönüş sadece boolean değerleri. *[?feature.enabled==
gerçek ]
çalışacak bile
, sadece mülkiyet değerleri dizisi olurdu, ama Anahtarları (a
ve c
) lutfen gerekir. Bunun jmespath'ta gerçekleşmesinin bir yolu var mı?
Bu, tüm olası bir oyun kitabının bir parçası, bu yüzden seçim kesinlikle farklı bir şekilde (Jinja2 şablonları veya özel eklenti) elde etmek için bir yol olurdu ama jmespath denemek istedim ve mantıklı olurdu, böyle bir görev.
Herhangi bir şeyi sorgulamaktan başka, iç içe geçmiş verilere göre belirli anahtarları silmek istiyorsunuz. [Perl için bu soru] gibi bir şey (http://stackoverflow.com/q/18660309/2947502). Ben de JMESPath ile yapıp yapamayacağınızı bilmek istiyorum. – techraf