{-# OPTIONS_HADDOCK not-home #-}
module Arbiter.Core.Json
( patchOptions
, decodeOrEmpty
) where
import Data.Aeson (FromJSON, Options (..), Value, defaultOptions, parseJSON)
import Data.Aeson.Types (parseMaybe)
import Data.Maybe (fromMaybe)
patchOptions :: Options
patchOptions :: Options
patchOptions = Options
defaultOptions {omitNothingFields = True}
decodeOrEmpty :: (FromJSON a, Monoid a) => Value -> a
decodeOrEmpty :: forall a. (FromJSON a, Monoid a) => Value -> a
decodeOrEmpty = a -> Maybe a -> a
forall a. a -> Maybe a -> a
fromMaybe a
forall a. Monoid a => a
mempty (Maybe a -> a) -> (Value -> Maybe a) -> Value -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Value -> Parser a) -> Value -> Maybe a
forall a b. (a -> Parser b) -> a -> Maybe b
parseMaybe Value -> Parser a
forall a. FromJSON a => Value -> Parser a
parseJSON