【发布时间】:2015-01-18 20:11:46
【问题描述】:
我正在使用 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 的所有类实现此一次,而无需为每个类实现格式.正如我所提到的,有很多类,为每个类实现自定义格式将非常乏味,我认为需要大量维护。例如,如果我可以在Base 中注释_id val,那就太好了。有什么办法可以避免为每个类实现格式?
【问题讨论】:
-
您可以使用
jsonFormat(Person, "id", "firstName", "lastName")来设置字段的名称(而不是jsonFormat3(Person))。 -
@jrudolph 这并不理想,因为我仍然需要为每个类单独定义它。但是,使用 spray-json 可能是最简单的方法。您能否将其写为答案,以便我将其标记为最佳答案?谢谢!
-
啊,人们一直在使用的另一种可能性是覆盖
ProductFormat.extractFieldNames以提供名称的一般映射。
标签: json scala spray spray-json