diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # microlens-aeson
 
+## 2.5.1 (2023-08-16)
+
+#### Changed
+
+- Support for `aeson-2.2`.
+
 ## 2.5.0 (2022-03-19)
 
 This is a breaking update that matches upstream changes to `lens-aeson`. Luckily
diff --git a/microlens-aeson.cabal b/microlens-aeson.cabal
--- a/microlens-aeson.cabal
+++ b/microlens-aeson.cabal
@@ -1,7 +1,7 @@
 cabal-version:      2.2
 name:               microlens-aeson
-version:            2.5.0
-synopsis:           Law-abiding lenses for Aeson, using microlens.
+version:            2.5.1
+synopsis:           Law-abiding lenses for Aeson, using microlens
 description:        Law-abiding lenses for Aeson, using microlens.
 category:           Numeric
 homepage:           http://github.com/fosskers/microlens-aeson/
@@ -9,11 +9,13 @@
 maintainer:         Colin Woodbury <colin@fosskers.ca>
 copyright:
   Copyright (C) 2012 Paul Wilson, (C) 2013 Edward A. Kmett, (C) 2015 Colin Woodbury
+tested-with: GHC==9.6.2, GHC==9.4.5, GHC==9.2.7, GHC==9.0.2, GHC==8.10.7
 
+
 license:            MIT
 license-file:       LICENSE
 build-type:         Simple
-extra-source-files:
+extra-doc-files:
   AUTHORS.md
   README.md
   CHANGELOG.md
diff --git a/src/Lens/Micro/Aeson.hs b/src/Lens/Micro/Aeson.hs
--- a/src/Lens/Micro/Aeson.hs
+++ b/src/Lens/Micro/Aeson.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP               #-}
 {-# LANGUAGE DefaultSignatures #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE RankNTypes        #-}
@@ -30,8 +31,6 @@
 
 import           Data.Aeson
 import qualified Data.Aeson.KeyMap as KM
-import           Data.Aeson.Parser (value)
-import           Data.Attoparsec.ByteString.Lazy (maybeResult, parse)
 import qualified Data.ByteString as Strict
 import           Data.ByteString.Lazy.Char8 as Lazy
 import           Data.Scientific (Scientific)
@@ -46,6 +45,11 @@
 import           Lens.Micro.Aeson.Internal ()
 import           Prelude
 
+#if !MIN_VERSION_aeson(2,2,0)
+import           Data.Aeson.Parser (value)
+import           Data.Attoparsec.ByteString.Lazy (maybeResult, parse)
+#endif
+
 ------------------------------------------------------------------------------
 -- Scientific Traversals
 ------------------------------------------------------------------------------
@@ -295,10 +299,14 @@
   {-# INLINE _JSON #-}
 
 instance AsJSON Lazy.ByteString where
+#if MIN_VERSION_aeson(2,2,0)
+  _JSON f b = maybe (pure b) (fmap encode . f) (decode b)
+#else
   _JSON f b = maybe (pure b) (fmap encode . f) v
     where v = maybeResult (parse value b) >>= \x -> case fromJSON x of
             Success x' -> Just x'
             _          -> Nothing
+#endif
   {-# INLINE _JSON #-}
 
 instance AsJSON String where
