From d80aaee42b5563df3a647830639bdd3b090a22ee Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Sun, 10 Oct 2021 08:43:45 -0700
Subject: [PATCH] Translations: don't depend on the fact that Aeson Object
 is...

implemented internally as a HashMap.  This is no longer
public as of aeson 2.0.0.0.
---
 pandoc.cabal                    | 1 -
 src/Text/Pandoc/Translations.hs | 5 ++---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/pandoc.cabal b/pandoc.cabal
index 9b59c8c98..50f33c937 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -578,7 +578,6 @@ library
                  text-conversions      >= 0.3      && < 0.4,
                  time                  >= 1.5      && < 1.13,
                  unicode-transforms    >= 0.3      && < 0.4,
-                 unordered-containers  >= 0.2      && < 0.3,
                  xml                   >= 1.3.12   && < 1.4,
                  xml-conduit           >= 1.9.1.1  && < 1.10,
                  unicode-collation     >= 0.1.1    && < 0.2,
diff --git a/src/Text/Pandoc/Translations.hs b/src/Text/Pandoc/Translations.hs
index 0c7d7ab23..000d1091b 100644
--- a/src/Text/Pandoc/Translations.hs
+++ b/src/Text/Pandoc/Translations.hs
@@ -31,7 +31,6 @@ module Text.Pandoc.Translations (
 where
 import Data.Aeson.Types (Value(..), FromJSON(..))
 import qualified Data.Aeson.Types as Aeson
-import qualified Data.HashMap.Strict as HM
 import qualified Data.Map as M
 import qualified Data.Text as T
 import qualified Data.YAML as YAML
@@ -83,8 +82,8 @@ instance YAML.FromYAML Term where
   parseYAML invalid = YAML.typeMismatch "Term" invalid
 
 instance FromJSON Translations where
-  parseJSON (Object hm) = do
-    xs <- mapM addItem (HM.toList hm)
+  parseJSON o@(Object hm) = do
+    xs <- parseJSON o >>= mapM addItem . M.toList
     return $ Translations (M.fromList xs)
     where addItem (k,v) =
             case safeRead k of