gpt4 book ai didi

haskell - 为持久实体创建 ToJSON 实例

转载 作者:行者123 更新时间:2023-12-01 10:00:51 25 4
gpt4 key购买 nike

我正在尝试使用 Yesod 1.2 中的新 selectRep 函数,但我无法让 json 响应正常工作。

instance ToJSON (Entity Feed) where
toJSON (Entity uid (Feed url lastUpdated)) = object
[ "id" .= uid
, "url" .= url
, "lastUpdated" .= lastUpdated
]

getFeedByIdR :: FeedId -> Handler TypedContent
getFeedByIdR feedId = do
feed <- runDB $ get404 feedId
selectRep $ do
provideRep $ return $ toJSON (Entity feedId feed)

我从上面的代码得到的错误是

Handler/Feed.hs:23:31:
Overlapping instances for ToJSON (Entity Feed)
arising from a use of `toJSON'
Matching instances:
instance ToJSON e => ToJSON (Entity e)
-- Defined in `persistent-1.2.0.1:Database.Persist.Class.PersistEntity'
instance ToJSON (Entity Feed) -- Defined at Handler/Feed.hs:5:10
In the second argument of `($)', namely
`toJSON (Entity feedId feed)'
In the second argument of `($)', namely
`return $ toJSON (Entity feedId feed)'
In a stmt of a 'do' block:
provideRep $ return $ toJSON (Entity feedId feed)

看来 persistent 确实为 ToJSON (Entity e) 提供了一个实例 here ,但我能否以某种方式使用我的 ToJSON(实体提要)

最佳答案

如果您为 Feed 提供一个实例,那么您可以使用内置的 Entity e 实例。将 json 添加到您的实体行将自动创建该实例,请参阅: https://github.com/yesodweb/persistent/wiki/Persistent-entity-syntax#json-instances

关于haskell - 为持久实体创建 ToJSON 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16432796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com