第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用標準Scala類在Scala中解析JSON?

如何使用標準Scala類在Scala中解析JSON?

我正在使用Scala 2.8中的JSON類中的構(gòu)建來解析JSON代碼。由于最小化依賴性,我不想使用Liftweb之一。我這樣做的方法似乎勢在必行,是否有更好的方法可以做到?import scala.util.parsing.json._...val json:Option[Any] = JSON.parseFull(jsonString)val map:Map[String,Any] = json.get.asInstanceOf[Map[String, Any]]val languages:List[Any] = map.get("languages").get.asInstanceOf[List[Any]]languages.foreach( langMap => {val language:Map[String,Any] = langMap.asInstanceOf[Map[String,Any]]val name:String = language.get("name").get.asInstanceOf[String]val isActive:Boolean = language.get("is_active").get.asInstanceOf[Boolean]val completeness:Double = language.get("completeness").get.asInstanceOf[Double]}
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

這是一個基于提取器的解決方案,它將進行類轉(zhuǎn)換:


class CC[T] { def unapply(a:Any):Option[T] = Some(a.asInstanceOf[T]) }


object M extends CC[Map[String, Any]]

object L extends CC[List[Any]]

object S extends CC[String]

object D extends CC[Double]

object B extends CC[Boolean]


val jsonString =

    """

      {

        "languages": [{

            "name": "English",

            "is_active": true,

            "completeness": 2.5

        }, {

            "name": "Latin",

            "is_active": false,

            "completeness": 0.9

        }]

      }

    """.stripMargin


val result = for {

    Some(M(map)) <- List(JSON.parseFull(jsonString))

    L(languages) = map("languages")

    M(language) <- languages

    S(name) = language("name")

    B(active) = language("is_active")

    D(completeness) = language("completeness")

} yield {

    (name, active, completeness)

}


assert( result == List(("English",true,2.5), ("Latin",false,0.9)))

在for循環(huán)的開始,我人為地將結(jié)果包裝在一個列表中,以便在最后生成一個列表。然后在for循環(huán)的其余部分中,我將使用生成器(使用<-)和值定義(使用=)將利用unapply方法的事實。


(較舊的答案已被刪除-如果您感到好奇,請檢查編輯歷史記錄)


查看完整回答
反對 回復 2019-10-05
?
qq_笑_17

TA貢獻1818條經(jīng)驗 獲得超7個贊

這是我進行模式匹配的方式:


val result = JSON.parseFull(jsonStr)

result match {

  // Matches if jsonStr is valid JSON and represents a Map of Strings to Any

  case Some(map: Map[String, Any]) => println(map)

  case None => println("Parsing failed")

  case other => println("Unknown data structure: " + other)

}


查看完整回答
反對 回復 2019-10-05
  • 3 回答
  • 0 關(guān)注
  • 1238 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號