{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} module Data.Schema.JSON ( JsonType , JsonSchema , JsonField , JsonSerializer(..) , JsonDeserializer(..) , ToJsonSerializer(..) , ToJsonDeserializer(..) , JsonPrimitive(..) ) where import Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON)) import Data.Schema import Data.Schema.JSON.Internal.Serializer import Data.Schema.JSON.Internal.Types instance (HasSchema a, ToJsonSerializer (PrimitivesOf a)) => ToJSON a where toJSON = runJsonSerializer . toJsonSerializer $ getSchema instance (HasSchema a, ToJsonDeserializer (PrimitivesOf a)) => FromJSON a where parseJSON = runJsonDeserializer . toJsonDeserializer $ getSchema