我有路由器相关数据,格式如下: -
List(Map(routerId -> testR1,
config ->
List(
Map(pin -> X12, color -> YELLOW),
Map(pin -> M20, color -> BLACK)
)
),
Map(routerId -> testR3,
config ->
List(
Map(pin -> M12, color -> YELLOW),
Map(pin -> X20, color -> BLACK),
Map(pin -> M11, color -> RED)
)
)
)
我有一个路由器案例类
case class Router(routerId: String, modelInfo: List[Map[String,String]])
我正在尝试创建一个路由器列表,我尝试使用asInstanceOf进行转换,如下所示:
val data = request.get("data").get.asInstanceOf[List[Map[String, List[Map[String, String]]]]]
但是,如果可能的话,我宁愿不施展它。有更好的方法吗?
编辑: 该请求实际上是json请求,如下所示:
{
"data": [
{
"routerId": "testR1",
"config": [
{
"pin": "X12",
"color": "Red"
},
{
"pin": "M15",
"color": "Yellow"
},
{
"pin": "X20",
"color": "Yellow"
}
]
},
{
"routerId": "testR2",
"config": [
{
"pin": "X20",
"color": "Black"
},
{
"pin": "M11",
"color": "Yellow"
}
]
}
]
}
我正在使用播放2,它实际上将其转换为List [Map ...]格式。
P.S。 - 我是斯卡拉的新手。
答案 0 :(得分:1)
你可以像这样使用play-json ..
import play.api.libs.json._
implicit val reads = Json.reads[Router]
val jsResult: JsResult[Router] = Json.fromJson[Router](jsonString)
println(jsResult.get)
了解更多信息
https://www.playframework.com/documentation/2.5.x/ScalaJson https://www.playframework.com/documentation/2.5.x/ScalaJsonAutomated