如何更新JSON对象的字段?

Leo Zhang

我正在使用创建一个JSON对象aeson如何向对象添加字段“电子邮件”?

> import Data.Aeson
> let alice = object ["name" .= "Alice", "age" .= 20]

我尝试使用<>但没用

> import Data.Monoid
> alice <> object ["email" .= "[email protected]"]

<interactive>:12:1: error:
    • No instance for (Monoid Value) arising from a use of ‘<>’
    • In the expression:
        alice <> object ["email" .= "[email protected]"]
      In an equation for ‘it’:
          it = alice <> object ["email" .= "[email protected]"]
自己

在上一个项目中,我曾经做过这样的事情:

import Data.Aeson
import Data.Text
import qualified Data.HashMap.Strict as HM

addJsonKey :: Text -> Value -> Value -> Value
addJsonKey key val (Object xs) = Object $ HM.insert key val xs
addJsonKey _ _ xs = xs

然后在ghci上:

λ> :set -XOverloadedStrings
λ> let alice = object ["name" .= "Alice", "age" .= 20]
λ> addJsonKey "email" (String "[email protected]") alice

使它起作用的关键是了解如何Value定义类型https : //www.stackage.org/haddock/lts-12.1/aeson-1.3.1.1/Data-Aeson.html#t : Value

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章