diff --git a/aeson-generic-compat.cabal b/aeson-generic-compat.cabal
--- a/aeson-generic-compat.cabal
+++ b/aeson-generic-compat.cabal
@@ -1,17 +1,24 @@
 name:                aeson-generic-compat
-version:             0.0.1.3
+version:             0.0.2.0
 synopsis:            Compatible generic class names of Aeson
 description:         This package includes compatible generic class names of Aeson package.
 license:             BSD3
 license-file:        LICENSE
 author:              Kei Hibino
 maintainer:          ex8k.hibino@gmail.com
-copyright:           Copyright (c) 2016-2018 Kei Hibino
+copyright:           Copyright (c) 2016-2022 Kei Hibino
 category:            Text
 build-type:          Simple
 -- extra-source-files:
 cabal-version:       >=1.10
-tested-with:           GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3
+tested-with:           GHC == 9.6.2
+                     , GHC == 9.4.6
+                     , GHC == 9.2.8
+                     , GHC == 9.0.1, GHC == 9.0.2
+                     , GHC == 8.10.1, GHC == 8.10.2, GHC == 8.10.3, GHC == 8.10.4
+                     , GHC == 8.8.1, GHC == 8.8.2, GHC == 8.8.3, GHC == 8.8.4
+                     , GHC == 8.6.1, GHC == 8.6.2, GHC == 8.6.3
+                     , GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3
                      , GHC == 8.2.1, GHC == 8.2.2
                      , GHC == 8.0.1, GHC == 8.0.2
                      , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
@@ -19,13 +26,25 @@
                      , GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3
                      , GHC == 7.4.1, GHC == 7.4.2
 
+flag aeson1
+     description: If true, use aeson 1.* or older, otherwise use aeson 2.* or newer
+     default:     False
+
 library
   exposed-modules:
                      Data.Aeson.Generic.Compat
   -- other-modules:
   -- other-extensions:
   build-depends:         base <5
-                       , aeson >=0.7
+                       , text
+
+  if flag(aeson1)
+    build-depends:
+                         aeson >=0.7 && <2
+                       , unordered-containers
+  else
+    build-depends:
+                         aeson >=2
   hs-source-dirs:      src
   default-language:    Haskell2010
 
diff --git a/src/Data/Aeson/Generic/Compat.hs b/src/Data/Aeson/Generic/Compat.hs
--- a/src/Data/Aeson/Generic/Compat.hs
+++ b/src/Data/Aeson/Generic/Compat.hs
@@ -2,10 +2,20 @@
 {-# LANGUAGE ConstraintKinds #-}
 
 module Data.Aeson.Generic.Compat (
+  objectKeys,
   GFromJSON0, GToJSON0,
   ) where
 
-import Data.Aeson (GFromJSON, GToJSON)
+import Data.Text (Text)
+
+#if MIN_VERSION_aeson(2,0,0)
+import qualified Data.Aeson.Key as Key
+import qualified Data.Aeson.KeyMap as KeyMap
+#else
+import qualified Data.HashMap.Strict as HashMap
+#endif
+
+import Data.Aeson (Object, GFromJSON, GToJSON)
 #if MIN_VERSION_aeson(1,0,0)
 import Data.Aeson (Zero)
 #endif
@@ -17,4 +27,12 @@
 #else
 type GFromJSON0  =  GFromJSON
 type GToJSON0    =  GToJSON
+#endif
+
+objectKeys :: Object -> [Text]
+objectKeys =
+#if MIN_VERSION_aeson(2,0,0)
+  map Key.toText . KeyMap.keys
+#else
+  HashMap.keys
 #endif
