{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FunctionalDependencies #-} -- | Pretty-printing JSON values. module Text.JSON.JSONPrint ( JSONPrint(..) ) where import Data.ByteString import Text.JSONb import qualified Text.JSON as J import qualified Text.HJson as H import qualified Data.Aeson.Types as A import Data.Aeson.Generic import Text.JSON.Pretty import Text.HJson.Pretty -- | Pretty-printing JSON values. class JSONPrint j s | j -> s where -- | Print the given JSON value to a pretty-printed value. printJSON :: j -- ^ The JSON value. -> s -- ^ The pretty-printed result. instance JSONPrint JSON ByteString where printJSON = encode Compact instance JSONPrint J.JSValue [Char] where printJSON = render . pp_value instance JSONPrint H.Json [Char] where printJSON = toString " " instance JSONPrint A.Value (A.Result [Char]) where printJSON = fromJSON