28 lines
507 B
Haskell
28 lines
507 B
Haskell
module JSON (
|
|
defaultOptions
|
|
, distinct
|
|
, singleLCField
|
|
) where
|
|
|
|
import Data.Char (toLower)
|
|
import Data.Aeson (
|
|
Options(..)
|
|
, SumEncoding(..)
|
|
, defaultOptions
|
|
)
|
|
|
|
first :: (a -> a) -> [a] -> [a]
|
|
first _ [] = []
|
|
first f (x:xs) = f x:xs
|
|
|
|
singleLCField :: Options
|
|
singleLCField = defaultOptions {
|
|
constructorTagModifier = (toLower `first`)
|
|
, sumEncoding = ObjectWithSingleField
|
|
}
|
|
|
|
distinct :: Options
|
|
distinct = defaultOptions {
|
|
sumEncoding = UntaggedValue
|
|
}
|