diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for staversion
 
+## 0.2.4.2  -- 2023-03-16
+
+* Support Cabal >= 3.6 and aeson >= 2 (#10)
+
 ## 0.2.4.1  -- 2021-05-16
 
 * Confirm test with `base-4.15.0.0` and `Cabal-3.4.0.0`.
diff --git a/src/Staversion/Internal/BuildPlan/Stackage.hs b/src/Staversion/Internal/BuildPlan/Stackage.hs
--- a/src/Staversion/Internal/BuildPlan/Stackage.hs
+++ b/src/Staversion/Internal/BuildPlan/Stackage.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- |
 -- Module: Staversion.Internal.BuildPlan.Stackage
 -- Description: dealing with Stackage and build-plan repositories online.
@@ -7,6 +8,7 @@
 --
 -- This module is meant to be exposed only to
 -- "Staversion.Internal.BuildPlan" and test modules.
+
 module Staversion.Internal.BuildPlan.Stackage
        ( -- * High level API
          ExactResolver(..),
@@ -27,11 +29,16 @@
 import qualified Data.Aeson as Aeson
 import qualified Data.ByteString.Lazy as BSL
 import Data.Function (on)
+#if MIN_VERSION_aeson(2,0,0)
+import Data.Aeson.Key (toString)
+import qualified Data.Aeson.KeyMap as HM
+#else
+import Data.Text (unpack)
 import qualified Data.HashMap.Strict as HM
+#endif
 import qualified Data.Map as M
 import Data.Maybe (listToMaybe)
 import Data.List (sortBy)
-import Data.Text (unpack)
 import Data.Word (Word)
 import Data.IORef (IORef)
 import System.IO.Error (ioError, userError)
@@ -99,12 +106,16 @@
 newtype DisamMap = DisamMap { unDisamMap :: M.Map PartialResolver ExactResolver }
 
 instance FromJSON DisamMap where
-  parseJSON (Object o) = fmap (DisamMap . M.fromList) $ mapM parsePair $ HM.toList o where
+  parseJSON (Object o) = fmap (DisamMap . M.fromList) $ mapM parsePair $ HM.toList o
+    where
     parsePair (k,v) = (,) <$> parseKey k <*> parseValue v
-    parseKey key = maybe empty return $ parseResolverString $ unpack key
+    parseKey key = maybe empty return $ parseResolverString $ toString key
     parseValue v = (expectExact . parseResolverString) =<< parseJSON v
     expectExact (Just (PartialExact e)) = return e
     expectExact _ = empty
+#if !MIN_VERSION_aeson(2,0,0)
+    toString = unpack
+#endif
   parseJSON _ = empty
 
 parseDisambiguator :: BSL.ByteString -- ^ disambiguation JSON text.
diff --git a/src/Staversion/Internal/BuildPlan/V1.hs b/src/Staversion/Internal/BuildPlan/V1.hs
--- a/src/Staversion/Internal/BuildPlan/V1.hs
+++ b/src/Staversion/Internal/BuildPlan/V1.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- |
 -- Module: Staversion.Internal.BuildPlan.V1
 -- Description: The legacy "version 1" of build plan YAML files
@@ -6,6 +7,7 @@
 -- __This is an internal module. End-users should not use it.__
 --
 -- @since 0.2.4.0
+
 module Staversion.Internal.BuildPlan.V1
   ( fetchBuildPlanYAML,
     parseBuildPlanMapYAML,
@@ -13,7 +15,12 @@
   ) where
 
 import Control.Applicative (empty)
+
 import Data.Aeson (FromJSON(..), (.:), Value(..), Object)
+#if MIN_VERSION_aeson(2,0,0)
+import Data.Aeson.KeyMap (toHashMapText)
+#endif
+
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as BSL
 import qualified Data.HashMap.Strict as HM
@@ -41,7 +48,9 @@
 newtype V1BuildPlanMap = V1BuildPlanMap (HM.HashMap PackageName Version) deriving (Show,Eq)
 
 instance FromJSON V1BuildPlanMap where
-  parseJSON (Object object) = (\p1 p2 -> V1BuildPlanMap $ p1 <> p2) <$> core_packages <*> other_packages where
+  parseJSON (Object object) =
+    (\p1 p2 -> V1BuildPlanMap $ toHashMapText p1 <> toHashMapText p2) <$> core_packages <*> other_packages
+    where
     core_packages = parseSysInfo =<< (object .: "system-info")
     parseSysInfo (Object o) = parseCorePackages =<< (o .: "core-packages")
     parseSysInfo _ = empty
@@ -53,6 +62,9 @@
     parsePackages _ = empty
     parsePackageObject (Object o) = unVersionJSON <$> (o .: "version")
     parsePackageObject _ = empty
+#if !MIN_VERSION_aeson(2,0,0)
+    toHashMapText = id
+#endif
   parseJSON _ = empty
 
 toBuildPlanMap :: V1BuildPlanMap -> BuildPlanMap
diff --git a/src/Staversion/Internal/Version.hs b/src/Staversion/Internal/Version.hs
--- a/src/Staversion/Internal/Version.hs
+++ b/src/Staversion/Internal/Version.hs
@@ -32,11 +32,24 @@
 import Data.Maybe (listToMaybe, fromJust)
 import Data.Text (Text, unpack)
 
-import qualified Distribution.Version as V
 #if MIN_VERSION_Cabal(2,2,0)
+
+#if MIN_VERSION_Cabal(3,6,0)
+import qualified Distribution.Types.VersionInterval.Legacy as V
+#else
+import qualified Distribution.Types.VersionInterval as V
+#endif
+
+import qualified Distribution.Version as V (simplifyVersionRange)
+import qualified Distribution.Types.Version as V
+import qualified Distribution.Types.VersionRange as V
 import qualified Distribution.Pretty as DP
+
 #else
+
+import qualified Distribution.Version as V
 import qualified Distribution.Text as DT
+
 #endif
 
 import Data.Version (parseVersion)
@@ -75,7 +88,6 @@
 versionNumbers = V.versionBranch
 
 #endif
-
 
 #if MIN_VERSION_Cabal(2,2,0)
 
diff --git a/staversion.cabal b/staversion.cabal
--- a/staversion.cabal
+++ b/staversion.cabal
@@ -1,5 +1,5 @@
 name:                   staversion
-version:                0.2.4.1
+version:                0.2.4.2
 author:                 Toshio Ito <debug.ito@gmail.com>
 maintainer:             Toshio Ito <debug.ito@gmail.com>
 license:                BSD3
@@ -31,7 +31,7 @@
                         test/data/stack/stack_multi.yaml,
                         test/data/stack/stack_sample.yaml,
                         test/data/stack/stack_empty_packages.yaml
-                        
+
 homepage:               https://github.com/debug-ito/staversion
 bug-reports:            https://github.com/debug-ito/staversion/issues
 
@@ -64,25 +64,25 @@
                         Staversion.Internal.HTTP,
                         Staversion.Internal.Megaparsec,
                         Staversion.Internal.EIO
-  build-depends:        base >=4.8 && <4.16,
+  build-depends:        base >=4.8 && <4.19,
                         unordered-containers >=0.2.3 && <0.3,
-                        hashable >=1.2.6.1 && <1.4,
-                        aeson >=0.8.0 && <1.6,
-                        text >=0.11.3 && <1.3,
-                        bytestring >=0.10.0 && <0.11,
+                        hashable >=1.2.6.1 && <1.5,
+                        aeson >=0.8.0 && <2.2,
+                        text >=0.11.3 && <2.1,
+                        bytestring >=0.10.0 && <0.12,
                         yaml >=0.8.3 && <0.12,
                         filepath >=1.3.0 && <1.5,
                         directory >=1.2.0 && <1.4,
-                        optparse-applicative >=0.11.0 && <0.17,
+                        optparse-applicative >=0.11.0 && <0.18,
                         containers >=0.5.5 && <0.7,
                         http-client >=0.4.18 && <0.8,
                         http-client-tls >=0.2.2 && <0.4,
                         http-types >=0.8.6 && <0.13,
-                        transformers >=0.3.0 && <0.6,
-                        transformers-compat >=0.4.0 && <0.7,
-                        megaparsec >=4.2.0 && <9.1,
-                        semigroups >=0.18.0.1 && <0.20,
-                        Cabal >=1.22.6.0 && <3.5,
+                        transformers >=0.3.0 && <0.7,
+                        transformers-compat >=0.4.0 && <0.8,
+                        megaparsec >=4.2.0 && <9.4,
+                        semigroups >=0.18.0.1 && <0.21,
+                        Cabal >=1.22.6.0 && <3.11,
                         pretty >=1.1.2.0 && <1.2,
                         ansi-wl-pprint >=0.6.7.3 && <0.7,
                         process >=1.2.3.0 && <1.7
@@ -92,9 +92,9 @@
   hs-source-dirs:       app
   main-is:              Main.hs
   ghc-options:          -Wall -fno-warn-unused-imports -rtsopts -threaded "-with-rtsopts=-N"
-  -- other-modules:        
-  -- default-extensions:   
-  -- other-extensions:     
+  -- other-modules:
+  -- default-extensions:
+  -- other-extensions:
   build-depends:        base, staversion
 
 test-suite spec
@@ -104,7 +104,7 @@
   ghc-options:          -Wall -fno-warn-unused-imports -fno-warn-orphans "-with-rtsopts=-M512m"
   main-is:              Spec.hs
   default-extensions:   OverloadedStrings, QuasiQuotes
-  -- other-extensions:     
+  -- other-extensions:
   other-modules:        Staversion.Internal.BuildPlanSpec,
                         Staversion.Internal.BuildPlan.StackageSpec,
                         Staversion.Internal.BuildPlan.HackageSpec,
@@ -138,13 +138,13 @@
   default-extensions:   OverloadedStrings
   if !flag(network-test)
     buildable:          False
-  -- other-extensions:     
+  -- other-extensions:
   other-modules:        Staversion.Internal.TestUtil
   build-depends:        base, staversion, http-client, http-client-tls, bytestring, Cabal,
                         unordered-containers, text,
                         hspec
 
-                        
+
 source-repository head
   type:                 git
   location:             https://github.com/debug-ito/staversion.git
