{-# LANGUAGE CPP #-}
module Data.Aeson.Optional (
module Aeson,
object,
(.=),
(.=?)
) where
import Data.Aeson as Aeson hiding (object, (.=))
import Data.Aeson.Types (Pair)
import qualified Data.Aeson as JSON (object)
import Data.Maybe
#if !MIN_VERSION_aeson(2,0,0)
import Data.Text
#endif
object :: [Maybe Pair] -> Value
object :: [Maybe Pair] -> Value
object = [Pair] -> Value
JSON.object forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [Maybe a] -> [a]
catMaybes
infixr 8 .=?, .=
#if MIN_VERSION_aeson(2,0,0)
(.=?) :: ToJSON a => Key -> Maybe a -> Maybe Pair
#else
(.=?) :: ToJSON a => Text -> Maybe a -> Maybe Pair
#endif
Key
_ .=? :: forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe a
Nothing = forall a. Maybe a
Nothing
Key
key .=? Just a
val = forall a. a -> Maybe a
Just (Key
key, forall a. ToJSON a => a -> Value
toJSON a
val)
#if MIN_VERSION_aeson(2,0,0)
(.=) :: ToJSON a => Key -> a -> Maybe Pair
#else
(.=) :: ToJSON a => Text -> a -> Maybe Pair
#endif
Key
key .= :: forall a. ToJSON a => Key -> a -> Maybe Pair
.= a
val = forall a. a -> Maybe a
Just (Key
key, forall a. ToJSON a => a -> Value
toJSON a
val)