{-| Module : Dialogflow.Util Description : Utilities Copyright : (c) Mauricio Fierro, 2019 License : BSD3-Clause Maintainer : Mauricio Fierro This module contains misc utility functions. -} module Dialogflow.Util ( toObject , noNullObjects ) where import Data.Aeson ( ToJSON , toJSON , object , Value(..) , Object ) import Data.Aeson.Types (Pair) -- | Turn a value into an aeson @Object@ toObject :: ToJSON a => a -> Object toObject a = case toJSON a of Object o -> o _ -> error "toObject: value isn't an Object" {-| Removes values that were parsed to @Null@ values. Useful to avoid having @null@ values in generated JSON for @Nothing@ values. -} noNullObjects :: [Pair] -> Value noNullObjects = object . filter (\(_,v) -> v /= Null)