2017-09-16 65 views
0

我正在使用SCALA 2.11,並且有一個包含23個映射到Json消息的元素的案例類。但考慮到23個字段的限制仍然存在函數,我正在研究如何爲json構造這個case類。對於表here已經很好地解釋了這一點,但我正在嘗試將此應用於json示例。在SCALA中,如何從多個元組構造case類來處理json中的22+個字段?

現在,SCALA會爲此編譯錯誤。 TestJson是一個案例類,它映射到具有23個字段的Json消息(它是固定的,消息格式也是不變的)。

implicit val testJsonReads: Reads[ TestJson ] = (
     (JsPath \ "val1").read[String] and 
     : 
     : 
     : 
     (JsPath \ "val23").read[String])(TestJson.apply _) 

我想在23個值分解成元組,以避免編譯錯誤,也適用(用於讀取)和不應用(對於寫操作)。我怎樣才能做到這一點?

回答

2

Scala case having 22 fields but having issue with play-json in scala 2.11.5

這回答解釋瞭如何做到這一點。

但是,如果我的案例類中有超過22個字段,我更願意將它分爲案例類的邏輯組。

case class GeneralInfo(....) 
object GeneralInfo { implicit val format = Json.format[GeneralInfo] } 

case class Details(...) 
object Details { implicit val format = Json.format[Details] } 

case class MyRequest(generalInfo: GeneralInfo, details: Details) 
object MyRequest { implicit val format = Json.format[MyRequest] } 
+1

此外,它可以問,如果一個案件類等多性能處於同一水平/無結構是一個很好的做法 – cchantep

+1

@cchantep」 ......在同級別這麼多的性能是一個很好的做法「 - 這已被多次解釋。沒有人將這作爲一個原則問題,但這是案例類的目的之一 - 對於映射。要求其他團隊對其數據(json,數據庫表等)施加字段限制是不合理和不切實際的,因爲我們的SCALA應用程序無法處理它。 – user1554876

+1

這就是在目標域中強制執行模型規則的良好映射的目的。即使數據庫或JSON是「醜陋的」,映射也可以使用合理的案例類進行建模 – cchantep

相關問題