-- | The purpose of this module is to provide better failure messages -- When parsing a key of an object, this makes sure the key itself will show up module Data.Aeson.Extended ( module Export , (.:) , (.:?) ) where import Data.Aeson as Export hiding ((.:), (.:?)) import qualified Data.Aeson as A import Data.Aeson.Types hiding ((.:), (.:?)) import Data.Text (unpack, Text) import Data.Monoid ((<>)) (.:) :: FromJSON a => Object -> Text -> Parser a (.:) o p = modifyFailure (("failed to parse field " <> unpack p <> ": ") <>) (o A..: p) {-# INLINE (.:) #-} (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a) (.:?) o p = modifyFailure (("failed to parse field " <> unpack p <> ": ") <>) (o A..:? p) {-# INLINE (.:?) #-}