@@ -957,8 +957,8 @@ instance (IsRecord f b, ConsToJSON' b f) => ConsToJSON f where
957957 consToJSON = unTagged (consToJSON' :: Tagged b (f a -> Value))
958958 {-# INLINE consToJSON #-}
959959
960−instance (GRecordToObject f) => ConsToJSON' True f where
961− consToJSON' = Tagged (Object . gRecordToObject)
960+instance (GRecordToPairs f) => ConsToJSON' True f where
961+ consToJSON' = Tagged (object . toList . gRecordToPairs)
962962 {-# INLINE consToJSON' #-}
963963
964964instance GToJSON f => ConsToJSON' False f where
@@ -967,16 +967,16 @@ instance GToJSON f => ConsToJSON' False f where
967967
968968--------------------------------------------------------------------------------
969969
970−class GRecordToObject f where
971− gRecordToObject :: f a -> Object
970+class GRecordToPairs f where
971+ gRecordToPairs :: f a -> DList Pair
972972
973−instance (GRecordToObject a, GRecordToObject b) => GRecordToObject (a :*: b) where
974− gRecordToObject (a :*: b) = gRecordToObject a `M.union` gRecordToObject b
975− {-# INLINE gRecordToObject #-}
973+instance (GRecordToPairs a, GRecordToPairs b) => GRecordToPairs (a :*: b) where
974+ gRecordToPairs (a :*: b) = gRecordToPairs a `append` gRecordToPairs b
975+ {-# INLINE gRecordToPairs #-}
976976
977−instance (Selector s, GToJSON a) => GRecordToObject (S1 s a) where
978− gRecordToObject m1 = M.singleton (pack (selName m1)) (gToJSON (unM1 m1))
979− {-# INLINE gRecordToObject #-}
977+instance (Selector s, GToJSON a) => GRecordToPairs (S1 s a) where
978+ gRecordToPairs m1 = singleton (pack (selName m1), gToJSON (unM1 m1))
979+ {-# INLINE gRecordToPairs #-}
980980
981981--------------------------------------------------------------------------------
982982