如何在使用Json4s序列化期间重命名字段?

时间:2014-02-11 00:13:06

标签: json scala json4s

如何在json4s中轻松重命名字段名?从他们的文档中,我尝试了以下代码段,但它似乎没有将serial字段重命名为id

case class Person(serial: Int, firstName: String)

val rename = FieldSerializer[Person](renameTo("serial", "id"))

implicit val format = DefaultFormats + rename

write(Person(1, "Guest")) //returns {"serial":1,"firstName":"Guest"}

使用杰克逊库,通过声明注释很容易。但我正在寻找一个纯粹的scala库/解决方案。是否有更好的库或方法可以在scala中进行对象到json的序列化,并且可以轻松进行字段重命名?

2 个答案:

答案 0 :(得分:6)

您拥有的代码是以id作为字段返回正确的JSON。这是在控制台中评估的一个稍微更全面的示例:

import org.json4s._
import org.json4s.FieldSerializer._
import org.json4s.jackson.Serialization.write

case class Person(serial: Int, firstName: String)
val rename = FieldSerializer[Person](renameTo("serial", "id"))
implicit val format: Formats = DefaultFormats + rename
write(Person(1, "Guest")) // actually returns {"id":1,"firstName":"Guest"}

答案 1 :(得分:0)

您的代码段错误地命名了隐式。应该是:

implicit val formats: Formats = DefaultFormats + rename