使用Spray JSON自定义JSON对象属性名称

时间:2014-11-20 20:06:08

标签: json scala spray spray-json

我正在使用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,那将会很好。有什么办法可以避免为每个类实现格式吗?

1 个答案:

答案 0 :(得分:10)

以下是jrudolph的评论作为答案,让人们很容易看到。很棒的解决方案!

  

您可以使用jsonFormat(Person, "id", "firstName", "lastName")进行设置   字段的名称(而不是jsonFormat3(Person))。

jrudolph,如果你将评论改为答案,我会删除它。