【问题标题】:Customizing JSON object property names with Spray JSON使用 Spray JSON 自定义 JSON 对象属性名称
【发布时间】: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


【解决方案1】:

这里是 jrudolph 的评论作为答案,让人们更容易看到。很好的解决方案!

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

jrudolph,如果您将评论更改为答案,我将删除此内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2012-08-26
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多