使用lens-aeson从JSON中提取值

时间:2013-09-15 21:09:00

标签: haskell aeson lens

我刚刚在https://www.fpcomplete.com/user/tel/lens-aeson-traversals-prisms阅读了教程,并且我已经成功地将查询写入了json字节串。但是,我没有得到我想要的那种结果值。

我想按照

的方式做点什么
if (j^? key "some key" == Just "Google") then ...
                                         else ...

但是(j ^?key“某个键”)的类型为“Maybe Value”。

这必须是一个足够普遍的模式,如果没有实用程序函数将值转换为文本,我会感到惊讶。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我的镜头非常有限,但看起来你需要AsPrimitive的{​​{3}}方法:

if (j^? key "some key" >>= (^? _String)) == Just "Google"

或者您可以将正确的部分转换为Value

if (j^? key "some key" == Just (String "Google"))

答案 1 :(得分:3)

有! _String Prism的类型为Prism' Value Text,即它会尝试遍历包含Value的{​​{1}}分支。所以你可以做Text