17 lines
540 B
Haskell
17 lines
540 B
Haskell
{-# LANGUAGE TemplateHaskell, OverloadedStrings #-}
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
|
|
data Person = Person { firstName :: String
|
|
, lastName :: String
|
|
, age :: Maybe Int
|
|
} deriving (Show, Eq)
|
|
|
|
$(deriveJSON defaultOptions ''Person)
|
|
|
|
main = do
|
|
let test1 = "{\"firstName\":\"Bob\", \"lastName\":\"Smith\"}"
|
|
test2 = "{\"firstName\":\"Miles\", \"lastName\":\"Davis\", \"age\": 45}"
|
|
print (decode test1 :: Maybe Person)
|
|
print (decode test2 :: Maybe Person)
|