liblawless-0.13.0: Source/Aeson.hs
module Aeson (
module Data.Aeson,
module Data.Aeson.Types,
module Data.JsonSchema.Draft4,
moludeJSONOptions,
moludeToJSONEncoding,
moludeParseJSON
) where
import Molude
import Data.Char
import Data.Aeson
import Data.Aeson.Types
import GHC.Generics (Generic, Rep)
import Data.JsonSchema.Draft4
dropLensPrefix ∷ [Char] → [Char]
dropLensPrefix =
let
p c = c ≡ '_' ∨ isLower c
in
toListOf (droppingWhile p folded)
moludeJSONOptions ∷ Options
moludeJSONOptions = defaultOptions {
fieldLabelModifier = camelTo2 '_' ∘ dropLensPrefix,
constructorTagModifier = camelTo2 '_' ∘ dropLensPrefix,
allNullaryToStringTag = False,
omitNothingFields = False,
unwrapUnaryRecords = True,
sumEncoding = ObjectWithSingleField}
moludeToJSONEncoding ∷ ∀ a. (GToEncoding (Rep a), Generic a) ⇒ a → Encoding
moludeToJSONEncoding = genericToEncoding moludeJSONOptions
moludeParseJSON ∷ ∀ a. (GFromJSON (Rep a), Generic a) ⇒ Value → Parser a
moludeParseJSON = genericParseJSON moludeJSONOptions