diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.7.2
+
+- Support `aeson-1`: add `FromJSON1`, `FromJSON2` `ToJSON1`, and `ToJSON2` `These` instances.
+
 # 0.7.1
 
 - Add `AlignWithKey` in `Data.Align.Key` (added dependency `keys`)
diff --git a/Data/These.hs b/Data/These.hs
--- a/Data/These.hs
+++ b/Data/These.hs
@@ -71,6 +71,9 @@
 
 import qualified Data.HashMap.Strict as HM
 import qualified Data.Aeson as Aeson
+#if MIN_VERSION_aeson(1,0,0)
+import qualified Data.Aeson.Encoding as Aeson (pair)
+#endif
 
 -- --------------------------------------------------------------------------
 -- | The 'These' type represents values with two non-exclusive possibilities.
@@ -320,6 +323,44 @@
         p [("This", a)] = This <$> parseJSON a
         p [("That", b)] = That <$> parseJSON b
         p _  = fail "Expected object with 'This' and 'That' keys only"
+
+#if MIN_VERSION_aeson(1,0,0)
+instance Aeson.ToJSON2 These where
+    liftToJSON2  toa _ _tob _ (This a)    = Aeson.object [ "This" .= toa a ]
+    liftToJSON2 _toa _  tob _ (That b)    = Aeson.object [ "That" .= tob b ]
+    liftToJSON2  toa _  tob _ (These a b) = Aeson.object [ "This" .= toa a, "That" .= tob b ]
+
+    liftToEncoding2  toa _ _tob _ (This a)    = Aeson.pairs $ Aeson.pair "This" (toa a)
+    liftToEncoding2 _toa _  tob _ (That b)    = Aeson.pairs $ Aeson.pair "That" (tob b)
+    liftToEncoding2  toa _  tob _ (These a b) = Aeson.pairs $ Aeson.pair "This" (toa a) <> Aeson.pair "That" (tob b)
+
+instance ToJSON a => Aeson.ToJSON1 (These a) where
+    liftToJSON _tob _ (This a)    = Aeson.object [ "This" .= a ]
+    liftToJSON  tob _ (That b)    = Aeson.object [ "That" .= tob b ]
+    liftToJSON  tob _ (These a b) = Aeson.object [ "This" .= a, "That" .= tob b ]
+
+    liftToEncoding _tob _ (This a)    = Aeson.pairs $ "This" .= a
+    liftToEncoding  tob _ (That b)    = Aeson.pairs $ Aeson.pair "That" (tob b)
+    liftToEncoding  tob _ (These a b) = Aeson.pairs $ "This" .= a <> Aeson.pair "That" (tob b)
+
+instance Aeson.FromJSON2 These where
+    liftParseJSON2 pa _ pb _ = Aeson.withObject "These a b" (p . HM.toList)
+      where
+        p [("This", a), ("That", b)] = These <$> pa a <*> pb b
+        p [("That", b), ("This", a)] = These <$> pa a <*> pb b
+        p [("This", a)] = This <$> pa a
+        p [("That", b)] = That <$> pb b
+        p _  = fail "Expected object with 'This' and 'That' keys only"
+
+instance FromJSON a => Aeson.FromJSON1 (These a) where
+    liftParseJSON pb _ = Aeson.withObject "These a b" (p . HM.toList)
+      where
+        p [("This", a), ("That", b)] = These <$> parseJSON a <*> pb b
+        p [("That", b), ("This", a)] = These <$> parseJSON a <*> pb b
+        p [("This", a)] = This <$> parseJSON a
+        p [("That", b)] = That <$> pb b
+        p _  = fail "Expected object with 'This' and 'That' keys only"
+#endif
 
 instance (Arbitrary a, Arbitrary b) => Arbitrary (These a b) where
   arbitrary = oneof [ This <$> arbitrary
diff --git a/these.cabal b/these.cabal
--- a/these.cabal
+++ b/these.cabal
@@ -1,5 +1,5 @@
 Name:                these
-Version:             0.7.1
+Version:             0.7.2
 Synopsis:            An either-or-both data type & a generalized 'zip with padding' typeclass
 Homepage:            https://github.com/isomorphism/these
 License:             BSD3
@@ -36,7 +36,7 @@
                        Control.Monad.Trans.Chronicle
 
   Build-depends:       base                     >= 4.4     && < 4.10,
-                       aeson                    >= 0.7.0.4 && < 0.12,
+                       aeson                    >= 0.7.0.4 && < 1.1,
                        bifunctors               >= 0.1     && < 5.5,
                        binary                   >= 0.5.0.2 && < 0.9,
                        containers               >= 0.4     && < 0.6,
