モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)
目次目次を開く/閉じる

Scala で JSON 扱う方法

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2016/02/07
最終更新最終更新
2018/06/12
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め

    0
    ステッカーを贈るとは?

    インストール

    Json4s を利用します。最新バージョンはこちらから検索できます。

    build.sbt (sbt)

    libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.3.0"
    

    pom.xml (maven)

    <dependency>
      <groupId>org.json4s</groupId>
      <artifactId>json4s-jackson_${scala.version}</artifactId>
      <version>3.3.0</version>
    </dependency>
    

    JSON パース

    import org.json4s._
    import org.json4s.jackson.JsonMethods._
    
    object Main {
      def main(args: Array[String]): Unit = {
        val json = """{ "numbers" : [1, 2, 3, 4] }"""
        val jsonObj = parse(json)
        val map = jsonObj.asInstanceOf[JObject].values
        println(map) //=> Map(numbers -> List(1, 2, 3, 4))
        println(map get "numbers") //=> Some(List(1, 2, 3, 4))
    
        val json2 = """{ "name" : "Toy", "price" : 35.35 }"""
        val jsonObj2 = parse(json2)
        val map2 = jsonObj2.asInstanceOf[JObject].values
        println(map2) //=> Map(name -> Toy, price -> 35.35)
        println(map2 get "price") //=> Some(35.35)
      }
    }
    

    JSON 文字列を生成

    import org.json4s.jackson.JsonMethods._
    import org.json4s.JsonDSL._
    
    object Main {
      def main(args: Array[String]): Unit = {
    
        // リストから JSON 文字列に変換
        val list = List[Int](1, 2, 3)
        println(compact(render(list))) //=> [1,2,3]
    
        // タプルから JSON 文字列に変換
        val tuple = ("name" -> "taro")
        println(compact(render(tuple))) //=> {"name":"taro"}
    
        // タプルの結合
        println(compact(render(
          ("name" -> "taro") ~ ("age" -> 20) //=> {"name":"taro","age":20}
        )))
    
        // Option 型を利用して if 存在するならば、が記述可能
        println(compact(render(
          ("name" -> Some("taro")) ~ ("age" -> (None: Option[Int])) //=> {"name":"taro"}
        )))
    
        // 複雑な例
        println(compact(render(
          ("key" ->
            ("inner_key" -> "value") ~
            ("inner_key2" -> List(1, 2, 3)))
        ))) //=> {"key":{"inner_key":"value","inner_key2":[1,2,3]}}
      }
    }
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • Scala 文字列の処理
        書式指定 object Main { def main(args: Array[String]): Unit = { println("%d + %d = %d".format(1, 1, 2)) //=> 1 + 1 = 2 } } 文字列の比較 ヒアドキュメント 他の言語でいう「ヒアドキュメント」のようなものは """ で囲うことで実現できます。 object Main ...
        したくんしたくん6/18/2018に更新
        いいねアイコン画像0
      • Scala 日付に関する処理
        Date クラスを文字列にフォーマット import java.util.Date object Main { def main(args: Array[String]): Unit = { // format は Date に限らない文字列用の機能です。 println("%d-%d-%d" format (1, 1, 1)) //=> 1-1-1 printl...
        したくんしたくん6/5/2018に更新
        いいねアイコン画像0
      • 酢豚の基本的な使い方 (sbt)
        sbt は Scala および Java を主な対象としたビルドツールです。Scala Build Tool の略ではありませんが、Simple Build Tool という明示的な記述も公式ドキュメントなどには見当りません。以下 sbt の基本的な使用例をまとめます。使用した sbt のバージョンは 0.13 です。 公式ドキュメント [sbt 0.13](http://www.scala-sb...
        ねこねこ6/30/2018に更新
        いいねアイコン画像0
      • Scala 関数のサンプルコード
        「デフォルト引数」および「Unit 型を返す関数」 object HelloWorld { def main(args: Array[String]): Unit = { def myPrint(myArg: String = "default_value") = println(myArg + "!") val result = myPrint() //=> defau...
        したくんしたくん6/26/2018に更新
        いいねアイコン画像0
      • Scala 組み込みの制御構造
        if-else 条件分岐で知られる if-else は三項演算子のようにも使用されます。 object HelloWorld { def main(args: Array[String]): Unit = { val myVal = if (!args.isEmpty) args(0) else "default" println(myVal) } ...
        したくんしたくん10/7/2021に更新
        いいねアイコン画像0