Scala で JSON 文字列を解析する
Suraj P
2023年6月21日
この記事では、Scala プログラミング言語で JSON 文字列を解析する方法を説明します。
JSON は、Web サーバーとの間でやり取りされる一般的な形式です。 ここでの目的は、オブジェクトの配列を持つ JSON 文字列が与えられた場合に、それを Scala オブジェクトにデシリアライズして、アプリケーションで使用できるようにすることです。
プレーンな Scala メソッドと機能を使用して JSON を解析するか、さまざまな API とライブラリを使用して、Lift-JSON ライブラリや Circe などの JSON ファイルを解析できます。
Option
を使用して Scala で JSON 文字列を解析する
Option
を Scala のパターン マッチと共に使用して、JSON 文字列を解析できます。 次の JSON 文字列があるとします。
{
"languages": [{
"name": "English",
"is_active": true,
"completeness": 4.5
}, {
"name": "Japanese",
"is_active": true,
"completeness": 1.4
}]
}
以下のコードを使用して、Scala オブジェクトにマップできます。
class parse[T]
{
def unapply(X:Option[Any]):Option[T] = if(X.isEmpty) {
None
} else {
Some(X.get.asInstanceOf[T])
}
}
object A extends parse[Map[String,Any]]
object B extends parse[List[Any]]
object C extends parse[String]
object D extends parse[Double]
object E extends parse[Boolean]
for{
A(mp) <- List(JSON.parseFull(str))
B(languages) = mp.get("languages")
language<-languages
A(temp) = Some(language)
C(store_name) = temp.get("name")
E(check_active) = temp.get("is_active")
D(completeness_level) = temp.get("completeness")
}
yield{
(store_name,check_active,completeness_level)
}
API を使用して Scala で JSON 文字列を解析する
よく知られた Lift-JSON ライブラリを使用して、JSON 文字列を解析できます。 このライブラリには、JSON 文字列を Scala オブジェクトに逆シリアル化するために使用できる多くのメソッドが含まれています。
コード例:
import net.liftweb.json.DefaultFormats
import net.liftweb.json._
case class Employee(
Name: String,
id: Int,
username: String,
password: String,
DepartmentsWorking: List[String]
)
object ParseJsonArray extends App {
implicit val formats = DefaultFormats
val str ="""
{
"employees": [
{ "Account": {
"Name": "YMail",
"id": 3,
"username": "srj",
"password": "123456srj",
"DepartmentsWorking": ["sales", "IT", "HR"]
}},
]}
"""
val json = parse(str)
val contents = (json \\ "Account").children
for (temp <- contents) {
val m = temp.extract[Employee]
println(s"Employee: ${m.Name}, ${m.id}")
println(" Departments working: " + m.DepartmentsWorking.mkString(","))
}
}
上記のコードでは、JSON データに一致するケース クラス Employee
を作成しました。
API を使用する利点は、より簡潔なコードを記述し、基本的な Scala メソッドが提供しない多くの機能を提供するのに役立つことです。
まとめ
この記事では、プレーンな古い Scala メソッドを使用する方法と、よく知られた API を使用して JSON 文字列を解析する別の方法を使用する方法の 2つの方法を見てきました。 また、記述の単純さとその機能により、解析中は常に API が優先されることを理解しました。