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