Я хотел бы преобразовать свой json в формат ниже. И конвертировать из формата ниже в мою запись. Пожалуйста, проверьте код, который я написал ниже.
{
"uid" : "bob",
"emailid" : "[email protected]",
"email_verified" : "Y" // "Y" for EmailVerified and "N" for EmailNotVerified
}
У меня есть код ниже, где я пытаюсь преобразовать пользовательский тип в json и из него, используя библиотеку Aeson в Haskell.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}
import Data.Monoid ((<>))
import GHC.Generics
import Data.Aeson (FromJSON, ToJSON)
import Data.Aeson.Types
data User = User {
userId :: String,
userEmail :: String,
userEmailVerified :: EmailState
} deriving (Show, Generic)
data EmailState = EmailVerified | EmailNotVerified deriving (Generic, Show)
instance ToJSON User where
toJSON u = object [
"uid" .= userId u,
"emailid" .= userEmail u,
"email_verified" .= userEmailVerified u
]
instance FromJSON User where
parseJSON = withObject "User" $ \v -> User
<$> v .: "uid"
<*> v .: "emailid"
<*> v .: "email_verified"
instance ToJSON EmailState
instance FromJSON EmailState
Однако мой формат, который я сейчас могу создать, выглядит следующим образом:
{
"uid" : "bob",
"emailid" : "[email protected]",
"email_verified" : "EmailVerified"
}
To/FromJSON
экземпляры дляEmailState
- person 4e6   schedule 27.11.2017