我正在使用创建一个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] 删除。
我来说两句