jsonifier-0.2.1.2: demo/Main.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
import qualified Data.ByteString.Char8
import qualified Jsonifier as J
import Prelude
-- |
-- Outputs the following:
--
-- > {"name":"Metallica","genres":[{"name":"Metal"},{"name":"Rock"},{"name":"Blues"}]}
main =
Data.ByteString.Char8.putStrLn (J.toByteString (artistJson metallica))
metallica :: Artist
metallica =
Artist "Metallica" [Genre "Metal", Genre "Rock", Genre "Blues"]
-- * Model
-------------------------
data Artist = Artist {artistName :: Text, artistGenres :: [Genre]}
data Genre = Genre {genreName :: Text}
-- * Encoders
-------------------------
artistJson :: Artist -> J.Json
artistJson Artist {..} =
J.object
[ ("name", J.textString artistName),
("genres", J.array (fmap genreJson artistGenres))
]
genreJson :: Genre -> J.Json
genreJson Genre {..} =
J.object
[ ("name", J.textString genreName)
]