我正在使用spray-json序列化一个对象树,它基于类层次结构,如下所示:
trait Base {
val _id: Long
}
case class Person(_id: Long, firstName: String, lastName: String) extends Base
case class Company(_id: Long, name: String) extends Base
这当然是一个人为的例子,真正的代码库包含许多类和字段。然而,这个想法是,有一个特征包含一些共同的价值观。
现在的问题是,是否有一种方法可以格式化JSON,而不是_id
,而属性名称只是id
。
现在,在您跳转并告诉您扩展JsonFormat
之前,问题是我是否可以为所有扩展Base
的类实现一次,而不实现格式每个班级。正如我所提到的,有许多类,并且为每个类实现自定义格式将非常繁琐,我认为将需要相当多的维护。如果我可以在_id
中注释Base
val,那将会很好。有什么办法可以避免为每个类实现格式吗?
答案 0 :(得分:10)
以下是jrudolph的评论作为答案,让人们很容易看到。很棒的解决方案!
您可以使用
jsonFormat(Person, "id", "firstName", "lastName")
进行设置 字段的名称(而不是jsonFormat3(Person)
)。
jrudolph,如果你将评论改为答案,我会删除它。