diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+## [0.1.0.1] - 2022-04-26
+
+### Added
+
+* Compatibility with `aeson >= 2.0.0.0`
+
 ## [0.1.0.0] - 2021-12-23
 
 ### Changed
diff --git a/autodocodec-yaml.cabal b/autodocodec-yaml.cabal
--- a/autodocodec-yaml.cabal
+++ b/autodocodec-yaml.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           autodocodec-yaml
-version:        0.1.0.0
+version:        0.1.0.1
 synopsis:       Autodocodec interpreters for yaml
 homepage:       https://github.com/NorfairKing/autodocodec#readme
 bug-reports:    https://github.com/NorfairKing/autodocodec/issues
diff --git a/src/Autodocodec/Yaml/Encode.hs b/src/Autodocodec/Yaml/Encode.hs
--- a/src/Autodocodec/Yaml/Encode.hs
+++ b/src/Autodocodec/Yaml/Encode.hs
@@ -6,11 +6,12 @@
 
 module Autodocodec.Yaml.Encode where
 
+import qualified Autodocodec.Aeson.Compat as Compat
 import Autodocodec.Aeson.Encode
 import Autodocodec.Class
 import Autodocodec.Codec
 import Autodocodec.DerivingVia
-import qualified Data.HashMap.Strict as HM
+import Control.Arrow (first)
 import Data.Scientific
 import Data.Text (Text)
 import qualified Data.Text as T
@@ -75,7 +76,7 @@
 
     -- Encode a 'JSON.Object'
     yamlObject :: JSON.Object -> YamlBuilder
-    yamlObject a = Yaml.mapping $ HM.toList (HM.map yamlValue (a :: JSON.Object))
+    yamlObject a = Yaml.mapping $ map (first Compat.fromKey) $ Compat.toList (Compat.map yamlValue (a :: JSON.Object))
 
     -- Encode a 'JSON.Value'
     yamlValue :: JSON.Value -> YamlBuilder
diff --git a/src/Autodocodec/Yaml/Schema.hs b/src/Autodocodec/Yaml/Schema.hs
--- a/src/Autodocodec/Yaml/Schema.hs
+++ b/src/Autodocodec/Yaml/Schema.hs
@@ -57,8 +57,8 @@
       [] -> [cs] -- Shouldn't happen, but fine if it doesn't
       (l : ls) -> (cs ++ l) : indent ls
 
-    jsonValueChunk :: Yaml.Value -> Chunk
-    jsonValueChunk v = chunk $ T.strip $ TE.decodeUtf8With TE.lenientDecode (Yaml.encode v)
+    jsonValueChunks :: Yaml.Value -> [[Chunk]]
+    jsonValueChunks v = map ((: []) . chunk) $ T.lines $ T.strip $ TE.decodeUtf8With TE.lenientDecode (Yaml.encode v)
 
     docToLines :: Text -> [[Chunk]]
     docToLines doc = map (\line -> [chunk "# ", chunk line]) (T.lines doc)
@@ -106,7 +106,7 @@
       MapSchema s ->
         addInFrontOfFirstInList [fore white "<key>", ": "] $ [] : go s
       ObjectSchema os -> goObject os
-      ValueSchema v -> [[jsonValueChunk v]]
+      ValueSchema v -> jsonValueChunks v
       AnyOfSchema ne -> case ne of
         (NullSchema :| [s]) -> orNullChunks s
         (s :| [NullSchema]) -> orNullChunks s
@@ -133,7 +133,10 @@
          in let keySchemaChunks = go ks
                 defaultValueLine = case mDefaultValue kr of
                   Nothing -> []
-                  Just defaultValue -> [[chunk "# default: ", fore magenta $ jsonValueChunk defaultValue]]
+                  Just defaultValue ->
+                    case jsonValueChunks defaultValue of
+                      [c] -> [chunk "# default: " : map (fore magenta) c]
+                      cs -> [chunk "# default: "] : map ((chunk "#   " :) . map (fore magenta)) cs
                 prefixLines = ["# ", requirementComment kr] : defaultValueLine ++ maybe [] docToLines mdoc
              in addInFrontOfFirstInList [fore white $ chunk k, ": "] (prefixLines ++ keySchemaChunks)
       ObjectAllOfSchema ne -> concatMap goObject $ NE.toList ne
