我正在努力解决使用Aeson lenses操作JSON时遇到的问题。我的任务很简单,只需向JSON中嵌套的对象添加一个键即可。我已经通过以下方式成功更改了现有的键:
> :set -XOverloadedStrings
> import Control.Lens
> import Data.Aeson
> import Data.Aeson.Lens
> "{ \"a\": { \"b\": 10 } }" & key "a" . key "b" .~ String "jee"
"{\"a\":{\"b\":\"jee\"}}"
但是当我尝试让它处理新的键时,它只是默默地失败了,没有添加它:
> "{ \"a\": { \"b\": 10 } }" & key "a" . key "c" .~ String "jee"
"{\"a\":{\"b\":10}}"
我肯定是做错了什么事情,但是我想我已经没有法力理解到底出了什么问题。
您能向我指出正确的方向吗?
谢谢!
set
在运行时可能是无意义的,因此(一个版本的).~/set
返回Maybe
是有意义的。 - Ari Fordsham