簡體   English   中英

使用哪個鏡頭獲取 Aeson.Object 中的所有鍵?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM