module Data.Aeson.Extra ( lookupObject , lookupArray , lookupString , lookupBool ) where import Data.Aeson import qualified Data.HashMap.Strict as HM import qualified Data.Text as T lookupObject key kvs = case (HM.lookup key kvs) of Just (Object obj) -> HM.fromList $ map (\(k, v) -> (T.unpack k, v)) $ HM.toList obj _ -> HM.empty lookupArray key kvs = case (HM.lookup key kvs) of Just (Array arr) -> foldr (:) [] arr _ -> [] lookupString def key kvs = case (HM.lookup key kvs) of Just (String t) -> T.unpack t _ -> def lookupBool def key kvs = case (HM.lookup key kvs) of Just (Bool b) -> b _ -> def