telegram-api-0.4.2.0: src/Web/Telegram/API/Bot/JsonExt.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
-- | This module contains helper functions to work with JSON
module Web.Telegram.API.Bot.JsonExt
(
toJsonDrop,
parseJsonDrop
) where
import Data.Aeson
import Data.Aeson.Types
import GHC.Generics
-- | Method used to drop prefix from field name during serialization
toJsonDrop :: forall a.(GHC.Generics.Generic a, GToJSON (GHC.Generics.Rep a)) => Int -> a -> Value
toJsonDrop prefix = genericToJSON defaultOptions {
fieldLabelModifier = drop prefix
, omitNothingFields = True
}
-- | Method used to drop prefix from field name during deserialization
parseJsonDrop :: forall a.(Generic a, GFromJSON (Rep a)) => Int -> Value -> Parser a
parseJsonDrop prefix = genericParseJSON defaultOptions { fieldLabelModifier = drop prefix }