I am new to Haskell based on imperative programming. I would like to be able to serialize the object in JSON in the "Haskell way", but not quite sure how to do this.
I read Chapter 5 of RealWorldHaskell , which talks a bit about JSON, and it played with Aeson. I also looked at several JSON API libraries written in Haskell, for example:
This allowed me to create very simple JSON strings from objects (also thanks to this blog post ):
{-# LANGUAGE OverloadedStrings, DeriveGeneric #-}
import Data.Aeson
import GHC.Generics
data User = User {
email :: String,
name :: String
} deriving (Show, Generic)
instance ToJSON User
main = do
let user = User "foo@example.com" "Hello World"
let json = encode user
putStrLn $ show json
This will print:
"{\"email\":\"foo@example.com",\"name\":\"Hello World\"}"
User, . API- Facebook Graph data, JSON . , Facebook API (, API Facebook):
POST api.facebook.com/actions
{
"name": "read",
"object": "book",
"data": {
"favoriteChapter": 10,
"hardcover": true
}
}
name object - String, data - .
, " Haskell", User ?
, :
data User = User {
email :: String,
name :: String,
data :: CustomData
} deriving (Show, Generic)
data CustomData = CustomData {
favoriteColor :: String
}
, . , User JSON :
{
"email": "",
"name": "",
"data": {
"favoriteColor": ""
}
}
, , , User , , data, ( - , ).