0

のリストを指定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[?]
4

1 に答える 1