请考虑以下计划:
import Control.Monad.Trans.State.Strict
import Control.Lens
import Data.Aeson.Lens
import qualified Data.Aeson
json :: Data.Aeson.Value
json =
maybe undefined id (Data.Aeson.decode "{\"a\":\"1\"}")
addAField :: State Data.Aeson.Value ()
addAField =
assign (key "b" . _String) "2"
main =
print (execState addAField json)
它会产生以下输出:
Object (fromList [("a",String "1")])
如何更新
addAField
函数使程序产生以下输出:
Object (fromList [("a",String "1"), ("b",String "2")])