I am having trouble getting Aeson to spit out objects when I use custom types as keys. Let me demonstrate:
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
import Data.Aeson
import qualified Data.Map.Strict as M
import qualified Data.ByteString.Lazy.Char8 as B
import GHC.Generics
data LOL = A | B | C deriving (Eq, Ord, Generic, ToJSONKey, ToJSON)
main = do
B.putStrLn $ encode $ M.fromList [(A,"b")]
B.putStrLn $ encode $ M.fromList [("A","b")]
In one case, I get an array of arrays, while in the other it's a regular object:
$ ./tojsonkey
[["A","b"]]
{"A":"b"}
Any ideas?