【发布时间】:2013-12-08 20:44:11
【问题描述】:
为生成的类型编写 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 生成的内容来获得正确的咒语。
【问题讨论】:
-
你想明白了吗?在这里遇到完全相同的问题。
-
我已经有一段时间没有使用 Yesod 了,但我很确定我使用 Michael Snoyman 的链接中提到的添加的“json”进行了这项工作:github.com/yesodweb/yesod/wiki/…