2014-02-11 39 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

相關問題