为生成的类型编写 ToJSON/FromJSON 实例并不难,但是,当你生成代码时,你能把它扔进去吗?或者作为 Yesod 用户,有没有一种简单的方法可以实现这一点?(我还没有深入研究 TH 的工作原理……)
更新: 好的,我喜欢这个建议,但是说我的持久类型是用户。如果我使用
$(deriveJSON id ''User)
它产生
Exception when trying to run compile-time code:
Data.Aeson.TH.withType: Unsupported type: TySynD Model.User [] (AppT (ConT Model.UserGeneric) (ConT Database.Persist.GenericSql.Raw.SqlPersist))
Code: deriveJSON (id) 'User
显然是因为它是一个别名。但
$(deriveJSON id ''UserGeneric)
产量
Kind mis-match
The first argument of `UserGeneric' should have kind `(* -> *)
-> *
-> *',
but `backend[i5XB]' has kind `*'
我可能仍然有错误的类型,但我找不到足够的关于 Persistent 生成的内容来获得正确的咒语。