data SomeData = SomeData {
v1 :: Int,
v2 :: Int
} deriving (Show, Generic)
data SomeDataPack = SomeDataPack{
pack :: [SomeData]
} deriving (Show, Generic)
instance FromJSON SomeData
instance FromJSON SomeDataPack
parsedata :: IO (Maybe SomeDataPack)
parsedata = do
let x = "[{\"v1\":11,\"v2\":12},{\"v1\":13,\"v2\":14}]";
case (eitherDecode' x :: Either String SomeDataPack) of
Right r -> do
putStrLn $ show r
return $ Just r
Left e -> do
putStrLn $ show e
return Nothing