输入别名和 "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 FromJSON
和 ToJSON
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
我有一个类型别名:
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 FromJSON
和 ToJSON
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