代码之家  ›  专栏  ›  技术社区  ›  Saurabh Nanda

使用哪个镜头来获取Aeson中的所有关键点。对象

  •  1
  • Saurabh Nanda  · 技术社区  · 6 年前

    我在看 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 ,但这似乎不是实现这一目标的最简单/最快/最短的方法。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Gurkenglas    5 年前
    toKeysList :: Value -> [Text]
    toKeysList = toListOf $ members . asIndex
    
        2
  •  0
  •   phadej    6 年前

    我可能会使用@Gurkenglas建议的,或者

    view (_Object . to HM.keys)
        :: (AsValue s, MonadReader s m)
        => m [Text]
    

    我发现重要的是要注意这一点 lens 没有真正的光芒;这是有原因的。 对象的关键点是其“形状”的一部分。 透镜 当你不需要改变形状时,效果很好。所以你可以 收到 钥匙,但你不能做很多其他事情,也就是说,你不能 设置 修改 他们

    推荐文章