のリストを指定JsObject
して、それを に変換し、Map[String, JsValue]
各マップのキーと値のペアを反復処理して、ペアごとに JsObject を作成します。最後に、これらの JsObject をすべてList[JsObject]
.
以下は、 for 式を使用した私の試みです。
def getObjMap(obj: JsObject): Option[Map[String, JsValue]] = obj match {
case JsObject(fields) => Some(fields.toMap)
case _ => None
}
def createFields(x: (String, JsValue)): JsObject = Json.obj("n" -> x._1,
"v" -> x._2)
val objects: List[JsObject] = foo()
val res: List[JsObject] = for {
obj <- objects
map <- getObjMap(obj)
mapField <- map
} yield(createFields(mapField))
ただし、行でコンパイル時エラーが発生しますmapField <- map
。
[error] ...\myApp\app\services\Test.scala:65: type mismatch;
[error] found : scala.collection.immutable.Iterable[play.api.libs.
json.JsObject]
[error] required: Option[?]