-- | Like "Data.Aeson.QQ" but without interpolation. module Data.Aeson.QQ.Simple (aesonQQ) where import Data.Aeson import qualified Data.Text as T import qualified Data.Text.Encoding as TE import Language.Haskell.TH import Language.Haskell.TH.Quote import Language.Haskell.TH.Syntax (Lift (..)) import Prelude () import Prelude.Compat aesonQQ :: QuasiQuoter aesonQQ = QuasiQuoter { quoteExp = aesonExp , quotePat = const $ error "No quotePat defined for jsonQQ" , quoteType = const $ error "No quoteType defined for jsonQQ" , quoteDec = const $ error "No quoteDec defined for jsonQQ" } aesonExp :: String -> ExpQ aesonExp txt = case eitherDecodeStrict $ TE.encodeUtf8 $ T.pack txt of Left err -> error $ "Error in aesonExp: " ++ show err Right val -> lift (val :: Value)