如何提取满足条件的 aeson 值的一部分?
How to extract part of an aeson value that satisfies a condition?
我有一个 JSON 结构,如下所示:
{
"instances": [
{
"instanceId": "i-1234",
"tags": [
{
"value": "author1useast1",
"key": "hostname"
}
]
},
{
"instanceId": "i-5678",
"tags": [
{
"value": "proxy1useast1",
"key": "hostname"
}
]
}
]
}
我想获取所有 instances/instanceId
的列表,其中 instances/tags
的 hostname
为 author1useast1
。
我想过先得到一个key "instances" . _Values
的实例列表,然后把它映射到一个(instanceId
,tags
)元组的列表中,然后进行过滤。然而,这对我来说看起来效率很低。
是否有更优雅/惯用的方式来做到这一点?
非常感谢!
如果要使用镜头,可以使用filtered
光学,例如:
key "instances" . values
. filtered (anyOf (key "tags" . values) $
allOf (key "key") (=="hostname")
<&&> allOf (key "value") (=="author1useast1"))
. key "instanceId"
我有一个 JSON 结构,如下所示:
{
"instances": [
{
"instanceId": "i-1234",
"tags": [
{
"value": "author1useast1",
"key": "hostname"
}
]
},
{
"instanceId": "i-5678",
"tags": [
{
"value": "proxy1useast1",
"key": "hostname"
}
]
}
]
}
我想获取所有 instances/instanceId
的列表,其中 instances/tags
的 hostname
为 author1useast1
。
我想过先得到一个key "instances" . _Values
的实例列表,然后把它映射到一个(instanceId
,tags
)元组的列表中,然后进行过滤。然而,这对我来说看起来效率很低。
是否有更优雅/惯用的方式来做到这一点?
非常感谢!
如果要使用镜头,可以使用filtered
光学,例如:
key "instances" . values
. filtered (anyOf (key "tags" . values) $
allOf (key "key") (=="hostname")
<&&> allOf (key "value") (=="author1useast1"))
. key "instanceId"