RosettaCodeData/Task/JSON/Haskell/json-2.hs

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)