diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change log
 
+## 0.4.1.0
+
+* Support `aeson-2.2`
+
 ## 0.4.0.4
 
 * Relax upper bound on `fast-logger`: 2.11 -> 2.12
diff --git a/library/Control/Monad/Logger/Aeson/Internal.hs b/library/Control/Monad/Logger/Aeson/Internal.hs
--- a/library/Control/Monad/Logger/Aeson/Internal.hs
+++ b/library/Control/Monad/Logger/Aeson/Internal.hs
@@ -1,8 +1,10 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RankNTypes #-}
@@ -50,9 +52,8 @@
   ) where
 
 import Context (Store)
-import Control.Applicative (Applicative(liftA2))
 import Control.Monad.Logger (Loc(..), LogLevel(..), MonadLogger(..), ToLogStr(..), LogSource)
-import Data.Aeson (KeyValue((.=)), Value(Object), (.:), (.:?), Encoding, FromJSON, ToJSON)
+import Data.Aeson (KeyValue(..), Value(Object), (.:), (.:?), Encoding, FromJSON, ToJSON)
 import Data.Aeson.Encoding.Internal (Series(..))
 import Data.Aeson.Types (Pair, Parser)
 import Data.String (IsString)
@@ -124,7 +125,17 @@
   }
 
 -- | @since 0.3.0.0
+#if MIN_VERSION_aeson(2, 2, 0)
+instance KeyValue Encoding SeriesElem where
+  (.=) = explicitToField Aeson.toEncoding
+  {-# INLINE (.=) #-}
+
+  explicitToField f name value =
+    UnsafeSeriesElem $ Aeson.pair name $ f value
+  {-# INLINE explicitToField #-}
+#else
 deriving newtype instance KeyValue SeriesElem
+#endif
 -- | @since 0.3.1.0
 deriving newtype instance Semigroup SeriesElem
 
@@ -179,7 +190,7 @@
           <$> obj .: "file"
           <*> obj .: "package"
           <*> obj .: "module"
-          <*> (liftA2 (,) (obj .: "line") (obj .: "char"))
+          <*> (pure (,) <*> (obj .: "line") <*> (obj .: "char"))
           <*> pure (0, 0)
 
     parsePairs :: Maybe Value -> Parser (KeyMap Value)
diff --git a/monad-logger-aeson.cabal b/monad-logger-aeson.cabal
--- a/monad-logger-aeson.cabal
+++ b/monad-logger-aeson.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           monad-logger-aeson
-version:        0.4.0.4
+version:        0.4.1.0
 synopsis:       JSON logging using monad-logger interface
 description:    @monad-logger-aeson@ provides structured JSON logging using @monad-logger@'s
                 interface.
@@ -41,7 +41,7 @@
       library
   ghc-options: -Wall -fwarn-tabs -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
-      aeson >=1.5.2.0 && <2.1.3.0
+      aeson >=1.5.2.0 && <2.3
     , base >=4.11.1.0 && <5
     , bytestring >=0.10.8.2 && <0.12.0.0
     , context >=0.2.0.0 && <0.3
@@ -61,7 +61,7 @@
       app
   ghc-options: -Wall -fwarn-tabs -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
-      aeson >=1.5.2.0 && <2.1.3.0
+      aeson >=1.5.2.0 && <2.3
     , base >=4.11.1.0 && <5
     , monad-logger >=0.3.30 && <0.4.0
     , monad-logger-aeson
@@ -145,7 +145,7 @@
   build-tool-depends:
       hspec-discover:hspec-discover
   build-depends:
-      aeson >=1.5.2.0 && <2.1.3.0
+      aeson >=1.5.2.0 && <2.3
     , aeson-diff >=1.1.0.5 && <1.2.0.0
     , base >=4.11.1.0 && <5
     , bytestring >=0.10.8.2 && <0.12.0.0
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: monad-logger-aeson
-version: '0.4.0.4'
+version: '0.4.1.0'
 github: "jship/monad-logger-aeson"
 license: MIT
 license-file: LICENSE.md
@@ -29,7 +29,7 @@
 
 library:
   dependencies:
-  - aeson >=1.5.2.0 && <2.1.3.0
+  - aeson >=1.5.2.0 && <2.3
   - base >=4.11.1.0 && <5
   - bytestring >=0.10.8.2 && <0.12.0.0
   - context >=0.2.0.0 && <0.3
@@ -48,7 +48,7 @@
     build-tools:
     - hspec-discover
     dependencies:
-    - aeson >=1.5.2.0 && <2.1.3.0
+    - aeson >=1.5.2.0 && <2.3
     - aeson-diff >=1.1.0.5 && <1.2.0.0
     - base >=4.11.1.0 && <5
     - bytestring >=0.10.8.2 && <0.12.0.0
@@ -63,7 +63,7 @@
     source-dirs: app
     main: readme-example.hs
     dependencies:
-    - aeson >=1.5.2.0 && <2.1.3.0
+    - aeson >=1.5.2.0 && <2.3
     - base >=4.11.1.0 && <5
     - monad-logger >=0.3.30 && <0.4.0
     - monad-logger-aeson
