@@ -120,8 +120,6 @@ import Control.Applicative ( Const(Const), (<|>), (<$>), pure, (*>), (
120import Control.Concurrent.MVar (MVar, newMVar)
120import Control.Concurrent.MVar (MVar, newMVar)
121import Control.Exception (Exception)
121import Control.Exception (Exception)
122import qualified Data.Aeson as JSON
122import qualified Data.Aeson as JSON
123−import qualified Data.Aeson.Internal as JSON
124−import qualified Data.Aeson.Parser as JSON (value')
125import Data.Attoparsec.ByteString.Char8 hiding (Result)
123import Data.Attoparsec.ByteString.Char8 hiding (Result)
126import Data.ByteString (ByteString)
124import Data.ByteString (ByteString)
127import qualified Data.ByteString.Char8 as B
125import qualified Data.ByteString.Char8 as B
@@ -156,6 +154,12 @@ import qualified Data.UUID.Types as UUID
156import Data.Scientific (Scientific)
154import Data.Scientific (Scientific)
157import GHC.Real (infinity, notANumber)
155import GHC.Real (infinity, notANumber)
157+#if MIN_VERSION_aeson(2,1,2)
158+import qualified Data.Aeson.Types as JSON
160+import qualified Data.Aeson.Internal as JSON
159-- | Exception thrown if conversion from a SQL value to a Haskell
163-- | Exception thrown if conversion from a SQL value to a Haskell
160-- value fails.
164-- value fails.
161data ResultError = Incompatible { errSQLType :: String
165data ResultError = Incompatible { errSQLType :: String
@@ -574,7 +578,7 @@ instance FromField UUID where
574-- | json, jsonb
578-- | json, jsonb
575instance FromField JSON.Value where
579instance FromField JSON.Value where
576 fromField f mbs = parseBS =<< fromFieldJSONByteString f mbs
580 fromField f mbs = parseBS =<< fromFieldJSONByteString f mbs
577− where parseBS bs = case parseOnly (JSON.value' <* endOfInput) bs of
581+ where parseBS bs = case JSON.eitherDecodeStrict' bs of
578 Left err -> returnError ConversionFailed f err
582 Left err -> returnError ConversionFailed f err
579 Right val -> pure val
583 Right val -> pure val