如何为以下 Aeson Lens 表达式添加后缀
>>> "{\"a\": 4, \"b\": 7}" & members . _Number *~ 10
"{\"a\":40,\"b\":70}"
这样结果是 a Value
(带有Object
构造函数)而不是String
?
如何为以下 Aeson Lens 表达式添加后缀
>>> "{\"a\": 4, \"b\": 7}" & members . _Number *~ 10
"{\"a\":40,\"b\":70}"
这样结果是 a Value
(带有Object
构造函数)而不是String
?
您可以使用_Value
棱镜转换为Maybe Value
,然后从那里开始。镜头库中的翻转fmap
运算符<&>
为以下情况提供了很好的语法:
"{\"a\": 4, \"b\": 7}"^? _Value <&> members . _Number *~ 10
-- Just (Object fromList [("a",Number 40.0),("b",Number 70.0)])
您可以使用decode
from aeson解析您的字符串,然后像以前一样使用镜头:
ghci> (decode "{\"a\": 4, \"b\": 7}" :: Maybe Value ) & _Just . members . _Number *~ 10
Just (Object fromList [("a",Number 40.0),("b",Number 70.0)])