【发布时间】:2018-08-06 14:16:00
【问题描述】:
对于Json Play,当我想用自定义字段名称返回SalesData 的Json 表示时,我在Writes 的帮助下做到了,如下所示。是否可以使用Json4s 达到相同的结果?我从文档中读到By default the constructor parameter names must match json field names.
这是我使用 Play 框架的方法:
object SalesProcessor {
case class SalesData(saleId: Int, saleType: String)
implicit val saleReads: Reads[SalesData] = (
(JsPath \ "saleId").read[Int] and
(JsPath \ "saleType").read[String]
) (SalesData.apply _)
implicit val saleWrites: Writes[SalesData] = (
(JsPath \ "id").write[String] and
(JsPath \ "type").write[String]
) (unlift(SalesData.unapply))
val rawJson: String = Source.fromURL("https://mytest.com/api/sales.json").mkString
val salesJson: JsValue = Json.parse(rawJson)
val salesData: List[SalesData] = salesJson.as[List[SalesData]]
def salesToJsValue(salesData: SalesData): JsValue = {
Json.toJson(salesData)
}
}
但是在分解的时候如何给不同的字段名呢?
def salesToJsValue(salesData: SalesData): JValue = {
Extraction.decompose(salesData)
}
【问题讨论】: