gpt4 book ai didi

haskell - Aeson 棱镜,引用号为 "free"

转载 作者:行者123 更新时间:2023-12-02 21:32:16 24 4
gpt4 key购买 nike

只需阅读精彩的“Lens/Aeson Traversals/Prisms" 文章并拥有一个实际应用程序。给定以下匿名 JSON 结构,我将如何棱镜出一个集合而不是特定值?

{"Locations" : [ {"id" : "2o8434", "averageReview": ["5", "1"]},{"id" : "2o8435", "averageReview": ["4", "1"]},{"id" : "2o8436", "averageReview": ["3", "1"]},{"id" : "2o8437", "averageReview": ["2", "1"]},{"id" : "2o8438", "averageReview": ["1", "1"]}]}

我有:

λ> locations ^? key "Locations" . nth 0 . key "averageReview" . nth 0
Just (String "5")

我想要什么:

λ> locations ^? key "Locations" . * . key "averageReview" . nth 0
["5", "4", "3", "2", "1"]

我是否错过了棱镜的全部意义?或者这是一个合法的用例?

干杯!

最佳答案

您想要将 nth 0 替换为 values这是对 Aeson 数组的遍历。

此外,由于您有一个具有多个结果的遍历,并且需要一个列表而不是 Maybe,因此您必须使用 ^.. 而不是 ^?

*Main> locations ^.. key "Locations" . values . key "averageReview" . nth 0
[String "5",String "4",String "3",String "2",String "1"]

正如 Carl 所指出的,您可以添加一个 。 _String 到最后直接取出字符串:

*Main> locations ^.. key "Locations" . values . key "averageReview" . nth 0 . _String
["5","4","3","2","1"]

关于haskell - Aeson 棱镜,引用号为 "free",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com