我有以下Haskell代码,它将一个
目前,该代码会产生以下输出结果:
然而,我希望输出以下JSON结构(连接内部两个对象):
User
数据类型的列表编码为JSON格式并将其输出到标准输出:{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Aeson
import Data.Text
import qualified Data.ByteString.Lazy.Char8 as B
data User = User
{ id :: String
, name :: String
, address :: String
} deriving (Show)
instance ToJSON User where
toJSON (User id name address) = object
[ pack id .= object
[ "name" .= name
, "address" .= address
]
]
users :: [User]
users = [ User "user 1" "name of user 1" "address of user 1"
, User "user 2" "name of user 2" "address of user 2"
]
main :: IO ()
main = B.putStrLn $ encode users
目前,该代码会产生以下输出结果:
[
{
"user 1": {
"address": "address of user 1",
"name": "name of user 1"
}
},
{
"user 2": {
"address": "address of user 2",
"name": "name of user 2"
}
}
]
然而,我希望输出以下JSON结构(连接内部两个对象):
{
"user 1": {
"name": "name of user 1",
"address": "address of user 1"
},
"user 2": {
"name": "name of user 2",
"address": "address of user 2"
}
}
我需要如何更改toJSON
函数以打印所需的编码JSON?
"lastname": "name of user 2"
,但是问题中没有其他地方出现"lastname"
。 - Dave Compton