我有一些JSON來自我無法控制的外部API。在JSON的一部分被劃成這樣:如何將JSON字段轉換爲Scala Play框架2中的Seq?
{
"room_0": {
"area_sq_ft": 151.2
},
"room_1": {
"area_sq_ft": 200.0
}
}
而不是使用數組像他們應該擁有的,他們使用room_n一個關鍵要素的n個。不再創建room_0,room_1,room_2等的情況下類,我想將其轉換爲一個序列[房間]其中,這是我的房間的情況下類:
case class Room(area: Double)
我使用讀取play.api.libs.json
轉換JSON的其他部分轉換爲大小寫類,並且傾向於使用Reads進行此轉換。我怎麼能做到這一點?
這是我試過的。
val sqFtReads = (__ \ "size_sq_ft").read[Double]
val roomReads = (__ \ "size_sq_ft").read[Seq[Room]](sqFtReads).map(Room)
cmd19.sc:1: overloaded method value read with alternatives:
(t: Seq[$sess.cmd17.Room])play.api.libs.json.Reads[Seq[$sess.cmd17.Room]] <and>
(implicit r: play.api.libs.json.Reads[Seq[$sess.cmd17.Room]])play.api.libs.json.Reads[Seq[$sess.cmd17.Room]]
cannot be applied to (play.api.libs.json.Reads[Double])
val roomReads = (__ \ "size_sq_ft").read[Seq[Room]](sqFtReads).map(Room)
您是否閱讀過[documentation](https://www.playframework.com/documentation/2.5.x/ScalaJson)?你有什麼嘗試? – cchantep
@cchantep是的,我已經過了幾次文檔,但我沒有看到任何幫助我處理這個用例的東西。 –
首先,JSON示例不是一個數組(對應於Scala集合,例如'Seq'),而是一個帶有「room_0」和「room_1」鍵的詞典。那麼你最好看看Play JSON宏來定義一個'Reads [Room]'。 – cchantep