我想將簡單的JSON字符串(如{"Name":"abc", "age":10}
)轉換爲相應的JSON對象(不是諸如「Person」之類的自定義Scala對象)。 Scala是否支持將字符串轉換爲JSON對象的任何內置方法?將JSON字符串轉換爲Scala中的JSON對象
我不會有任何複雜的JSON操作。我只需要將字符串轉換爲JSON對象。什麼是最簡單的方法來做到這一點?我是新來的Scala,所以我很抱歉,如果這個問題聽起來很基本。
謝謝。
我想將簡單的JSON字符串(如{"Name":"abc", "age":10}
)轉換爲相應的JSON對象(不是諸如「Person」之類的自定義Scala對象)。 Scala是否支持將字符串轉換爲JSON對象的任何內置方法?將JSON字符串轉換爲Scala中的JSON對象
我不會有任何複雜的JSON操作。我只需要將字符串轉換爲JSON對象。什麼是最簡單的方法來做到這一點?我是新來的Scala,所以我很抱歉,如果這個問題聽起來很基本。
謝謝。
您可能想要使用像Spray JSON這樣的庫。它提供了很多易於使用的功能來轉換和從JSON轉換。 如果你決定使用噴霧JSON,你可以這樣做:
import spray.json._
// some code here
val json = "your json string here".parseJson
您也可以從play framework使用JSON庫,但也可以作爲獨立的庫。這個庫基於良好但被遺棄的Jerkson項目,這是一個圍繞基於超快Java的JSON庫的傑克遜的Scala包裝。它具有與JSON的工作非常豐富和良好的記錄工具集 - transofrmers,驗證等
import play.api.libs.json._
val json: JsValue = Json.parse("""{"a":1}""")
要使用此lib中無間隙正好build.sbt用繩子
libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0"
由於安裝您特意詢問了Scala的本機設施以進行JSON解析 - 您正在尋找的軟件包是scala.utils.parsing.json。像下面這樣的東西應該工作:
import scala.util.parsing.json._
val parsed = JSON.parseFull("""{"Name":"abc", "age":10}""")
parsed
將於值:Some(Map(Name -> abc, age -> 10.0))
注:爲斯卡拉2.11的解析器組合子庫不再包含在覈心語言jar和需要分別添加到您的項目。您可以通過添加以下到您的build.sbt其添加到您的項目:
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
您可以在https://github.com/scala/scala-parser-combinators找到庫的源代碼。
其他許多人已經注意到,外部庫通常比原生Scala更好。我個人使用Play JSON。
的parseFull
回報-方面的Some(Map)
,parseRaw
回報的Some(JSONObject)
import scala.util.parsing.json._
val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault)
parsed
來講是把JSONObject
有Scala中的許多JSON庫。他們每個人都提供了一個解析函數來從字符串中獲取JSON值。你首先需要選擇一個lib(播放JSON,Argonaut,...)。 – cchantep
@cchantep Thx,但我想盡可能避免使用外部庫。這就是爲什麼我想知道Scala是否有內置支持。猜猜我只需要使用一個圖書館。 – drunkenfist