[英]Which lens to use to get all keys in an Aeson.Object?
我正在查看https://www.stackage.org/haddock/lts-12.1/lens-aeson-1.0.2/Data-Aeson-Lens.html並試圖找出一個可以給我所有鑰匙的鏡頭從一個Object
。 從概念上講,我正在尋找以下內容:
allKeys :: Value -> Maybe [Text]
allKeys v = v ^? _Object . keys -- `keys` is not an actual lens!
我可能最接近的是使用members
,但這似乎不是實現這一目標的最簡單/最快/最短的方法。
toKeysList :: Value -> [Text]
toKeysList = toListOf $ members . asIndex
我可能會使用@Gurkenglas 的建議,或者
view (_Object . to HM.keys)
:: (AsValue s, MonadReader s m)
=> m [Text]
我發現重要的是要注意lens
在那里並沒有真正發光。 因為某種原因。 對象的鍵是其“形狀”的一部分。 當您不需要改變形狀時, lens
效果很好。 所以你可以得到密鑰,但你不能做其他的事情,即你不能設置或修改它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.