我正在将 Aeson 用于我正在做的一些客户端-服务器工作,将 ADT 编码为 Json。我Data.Aeson.TH
用来生成toJSON
我需要的实例,但是为 Map 类型生成的实例真的很难看而且很难处理。
我已经定义了我自己的更简单的编码,它只是将它们视为列表:
instance (ToJSON a, ToJSON b) => ToJSON (Map a b) where
toJSON m = toJSON $ toList m
自然,当我在代码中使用它时,会出现Duplicate instance declarations
错误。
有没有办法解决这个问题?我需要告诉 Template Haskell 不要为 Map 生成 ToJson 实例,或者我需要告诉 GHC 忽略该实例并使用我提供的实例。这些都可以吗?
请注意,这不是“重叠实例”问题。我想完全丢弃一个实例,而不是将它与另一个实例混合。