0

scala json parse を使用した結果、次の結果が得られました。

import scala.util.parsing.json.JSON._
val j: String = """["this",["a","b",["c","d"]]]"""
val parse_test=parseFull(j)

これから、 Option[Any] の結果が得られます

を使用getして結果を取得できます (この場合、無効な json 形式については心配していないので、安全なはずですよね?)

parse_test.get
res26: Any = List(this, List(a, b, List(c, d)))

では、これから期待していAnyたものにするにはどうすればよいでしょうか。Listパターンマッチングを使用する必要があると思いますが、わかりません。どんな助けでも大歓迎です

4

2 に答える 2

0

これが私の解決策です:

scala> val Some(xs @ List(_*)) = parse_test
xs: List[Any] = List(this, List(a, b, List(c, d)))
于 2013-04-08T08:02:29.313 に答える
0

あなたができることは、パターンマッチとキャストによる折り畳みです:

test_result.fold[List[String]](Nil){
  case _ :: list :: _ => list.asInstanceOf[List[String]]
  case _ => Nil
}

最初の要素を捨てようとしていて、2 番目の要素が必要なリストであると仮定します。

編集:

2 番目の要素がリストでない場合、このキャストによって例外が発生することに注意してください。List[Any] を扱い、そこにあるものをデコードしようとするのは本当に恐ろしいことです...

于 2013-04-08T04:19:05.610 に答える