Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# LANGUAGE OverloadedStrings #-}
- import Data.Aeson
- import Data.Aeson.Types
- import Data.Time
- import Data.Text
- import qualified Data.HashMap.Strict as HM
- parseRecords :: Value -> Parser [(Day, Double)]
- parseRecords = withObject "record" $ \obj -> do
- mapM (uncurry parseRecord) (HM.toList obj)
- where
- parseRecord :: Text -> Value -> Parser (Day, Double)
- parseRecord s val = flip (withText "price") val $ \text -> do
- day <- getDay $ unpack s
- return (day, getPrice text)
- getDay str = parseTimeM True defaultTimeLocale "%Y-%m-%d" str :: Parser Day
- getPrice str = read $ unpack str :: Double
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement