6

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

我想做一些类似的事情

if (j^? key "some key" == Just "Google") then ...
                                         else ...

但是 (j^? key "some key") 的类型为 "Maybe Value"。

这一定是一种足够常见的模式,如果没有实用函数将值转换为文本,我会感到惊讶。有任何想法吗?

4

2 回答 2

3

我的 lens-fu 非常有限,但看起来你需要以下_String方法AsPrimitive

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

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

if (j^? key "some key" == Just (String "Google"))
于 2013-09-15T22:08:24.460 回答
3

有!_String Prismhas 类型Prism' Value Text,即它试图向下遍历Value包含 a的分支Text。所以你可以做到j ^? key "some key" . _String == Just "Google"

于 2013-09-16T02:29:55.293 回答