我是新手和 scala/play,需要 playframework 的 JSON 读/写方面的帮助。
我使用 Json.reads[T] 和 Json.writes[T] 宏来为我的类定义 json 读取和写入。但是,我希望(始终)以不同方式映射一个属性名称。即,我id
在我的类中命名了属性,我希望它表示为_id
对象转换为 json 的时间,反之亦然。
有没有办法修改由 Json.reads 和 Json.writes 宏生成的读/写对象来实现这一点,还是我必须手动重写读和写只是为了让一个属性命名不同?
编辑
让我试着更好地解释这个问题。考虑模型对象用户:
case class User (id: BigInt, email: String, name: String)
在将 User 序列化为 json 以便在 REST api 的上下文中提供 json 时,json 应如下所示:
{ "id": 23432, "name": "Joe", "email: "joe@example.com" }
当为了存储/更新/读取表单而将用户序列化为 json 时,MongoDB json 应该如下所示:
{“_id”:23432,“姓名”:“乔”,“电子邮件:“joe@example.com”}
换句话说,除了与 Mongo 通信时,一切都相同,id
应该表示为_id
.
我知道我可以按照 Darcy Qiu 在答案中的建议为每个模型对象手动编写两组读取和写入(一组用于 Web,另一组用于与 Mongo 通信),但是维护两组读取和写入几乎除了 id 属性似乎有很多代码重复,所以我想知道是否有更好的方法。