2014-02-11 17 views
4

如何轻松重命名json4s中的字段名称?从他们的文档中,我已经尝试了下面的代码片段,但它似乎没有将serial字段重命名为id如何在使用Json4s进行序列化时重命名字段?

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的序列化,并且简单的字段重命名?

回答

5

您所拥有的代码将以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"} 
+3

要合并多个重命名,请使用'orElse'。 (重新命名为(“serial”,“id”)或Esese renameTo(“firstName”,“first_name”)); var renames = FieldSerializer [Person] 隐式val格式:Formats = DefaultFormats +重命名; write(Person(1,“Guest”)) //返回{“id”:1,“first_name”:“Guest”} ' – mmullis

相关问题