我有一個JSON結構看起來像這樣:如何提取滿足條件的部分aeson值?
{
"instances": [
{
"instanceId": "i-1234",
"tags": [
{
"value": "author1useast1",
"key": "hostname"
}
]
},
{
"instanceId": "i-5678",
"tags": [
{
"value": "proxy1useast1",
"key": "hostname"
}
]
}
]
}
我想獲得的所有instances/instanceId
的列表,其中instances/tags
有author1useast1
一個hostname
。
我想過先獲得key "instances" . _Values
的實例列表,然後將其映射到(instanceId
,tags
)元組列表中,然後進行過濾。但是,這對我來說看起來效率很低。
有沒有更優雅/習慣的方式來做到這一點?
非常感謝!
的慣用方法是分析整個JSON文件,然後寫上從產生的ADT過濾功能。 – user2407038
是的,所以我已經有了上面的JSON作爲'Value',並且我知道如何過濾例如'instanceId's出來了。但是,我的情況涉及樹的不同部分,即「標籤」,我想知道如何過濾標籤與條件匹配的instanceIds。 –
對不起,我應該已經更清楚了 - 將文檔解析爲模擬文檔特定結構的ADT(例如'data Tag = Tag {value :: Text,key :: Text}; data Instance = Instance {ID: :Text,tag :: Tag}; newtype Instances = Instances [Instance]')。如果JSON格式良好,但與您期望的結構不符,會怎麼樣?比方說,有一個對象的'instanceId'和'tags'嵌套在其他對象的其中一個標籤字段中。任何對'Value'的過濾都不會檢測到這個;但是如果你首先解析你自己的ADT,你的文檔結構將被強制執行。 – user2407038