输入别名和 "instance ... where"

Type alias and "instance ... where"

我有一个类型别名:

type MyId = UUID

还有一个数据类型:

data MyData = MyData { myId :: MyId, .... }

然后我为 FromJSON 创建实例,为 MyData

创建实例 ToJSON
instance FromJSON MyData where
  parseJSON (Object v) = ....

instance ToJSON MyData where
  toJSON (Object v) = ....

我想知道,为什么我有错误:

1) No instance for (`FromJSON MyId`) arising from a use of ‘.:’
2) No instance for (ToJSON MyId) arising from a use of ‘.=’

instance FromJSONToJSON for UUID 已经实现了,难道 MyId 没有自动实现吗?如果没有,我将如何实施它们?

instance FromJSON MyId where
  parseJSON (Object v) = --- ? It's already UUID for which FromJSON is implemented

instance ToJSON MyId where
  toJSON (Object v) = --- ? It's already UUID for which FromJSON is implemented

您是否正在导入 Data.UUID.Aeson(来自 uuid-aeson 包)?

这对我有用:

import Data.UUID
import Data.UUID.Aeson
import Data.Aeson

type MyUUID = UUID

data U2 = U2 MyUUID Int

instance ToJSON U2 where
  toJSON(U2 a b) = toJSON a