Aeson Prism带有"免费"参考

 GIfi炬辉_904 发布于 2023-01-10 01:24

只需阅读精彩的" 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"]

我错过了整个棱镜点吗?或者这是一个合法的用例?

干杯!

1 个回答
  • 要替换nth 0使用values这是一个穿越了埃宋阵列.

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

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

    正如卡尔有用地指出的那样,你可以添加一个. _String到最后直接获取字符串:

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

    2023-01-10 01:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有