Я использую 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
. Можно ли что-нибудь сделать, чтобы избежать реализации форматов для каждого из классов?
jsonFormat(Person, "id", "firstName", "lastName")
для установки имен полей (вместоjsonFormat3(Person)
). - person jrudolph   schedule 21.11.2014ProductFormat.extractFieldNames
для обеспечения общего сопоставления имен. - person jrudolph   schedule 24.11.2014