diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# hpqtypes-1.9.1.0 (2020-09-14)
+* Expose aesonFromSQL and aesonToSQL for convenience.
+
 # hpqtypes-1.9.0.1 (2020-09-04)
 * Remove upper bounds of dependencies.
 
diff --git a/hpqtypes.cabal b/hpqtypes.cabal
--- a/hpqtypes.cabal
+++ b/hpqtypes.cabal
@@ -1,5 +1,5 @@
 name:                hpqtypes
-version:             1.9.0.1
+version:             1.9.1.0
 synopsis:            Haskell bindings to libpqtypes
 
 description:         Efficient and easy-to-use bindings to (slightly modified)
diff --git a/src/Database/PostgreSQL/PQTypes/JSON.hs b/src/Database/PostgreSQL/PQTypes/JSON.hs
--- a/src/Database/PostgreSQL/PQTypes/JSON.hs
+++ b/src/Database/PostgreSQL/PQTypes/JSON.hs
@@ -1,6 +1,9 @@
-module Database.PostgreSQL.PQTypes.JSON (
-    JSON(..)
+{-# LANGUAGE TypeApplications #-}
+module Database.PostgreSQL.PQTypes.JSON
+  ( JSON(..)
   , JSONB(..)
+  , aesonFromSQL
+  , aesonToSQL
   ) where
 
 import Data.Aeson
@@ -39,11 +42,11 @@
 
 instance FromSQL (JSON Value) where
   type PQBase (JSON Value) = PGbytea
-  fromSQL = valueFromSQL JSON
+  fromSQL = fmap JSON . aesonFromSQL
 
 instance ToSQL (JSON Value) where
   type PQDest (JSON Value) = PGbytea
-  toSQL = valueToSQL unJSON
+  toSQL = aesonToSQL . unJSON
 
 ----------------------------------------
 
@@ -72,24 +75,31 @@
 
 instance FromSQL (JSONB Value) where
   type PQBase (JSONB Value) = PGbytea
-  fromSQL = valueFromSQL JSONB
+  fromSQL = fmap JSONB . aesonFromSQL
 
 instance ToSQL (JSONB Value) where
   type PQDest (JSONB Value) = PGbytea
-  toSQL = valueToSQL unJSONB
+  toSQL = aesonToSQL . unJSONB
 
 ----------------------------------------
 
-valueFromSQL :: (Value -> json) -> Maybe PGbytea -> IO json
-valueFromSQL jsonCon mbase = do
+-- | Helper for defining 'FromSQL' instance for a type with 'FromJSON' instance.
+--
+-- @since 1.9.1.0
+aesonFromSQL :: FromJSON t => Maybe PGbytea -> IO t
+aesonFromSQL mbase = do
   evalue <- eitherDecodeStrict' <$> fromSQL mbase
   case evalue of
-    Left err -> E.throwIO . E.ErrorCall $ "valueFromSQL: " ++ err
-    Right value -> return $ jsonCon value
+    Left err -> E.throwIO . E.ErrorCall $ "aesonFromSQL: " ++ err
+    Right value -> return value
 
-valueToSQL :: (json -> Value)
-           -> json
-           -> ParamAllocator
-           -> (Ptr PGbytea -> IO r)
-           -> IO r
-valueToSQL jsonDecon = toSQL . BSL.toStrict . encode . jsonDecon
+-- | Helper for defining 'ToSQL' instance for a type with 'ToJSON' instance.
+--
+-- @since 1.9.1.0
+aesonToSQL
+  :: ToJSON t
+  => t
+  -> ParamAllocator
+  -> (Ptr PGbytea -> IO r)
+  -> IO r
+aesonToSQL = toSQL . BSL.toStrict . encode
