Help us understand the problem. What is going on with this article?

scalaでxmlをjsonへ変換する

More than 1 year has passed since last update.

問題

xmlでとってきたRSSをjsonに変換して扱いを楽にしたい。

解決

scalaライブラリjson4sを使うと、かなり簡単にxmlをJson形式へ変換できます。

準備は、build.sbtへjson4s-xmlを追加するだけ。

libraryDependencies += "org.json4s" %% "json4s-xml" % "3.6.3"

xmlをjsonへ変換します。
正確には、scalaのxmlを扱う標準クラスであるscala.xml.Elem型からJValueへの変換をします。

main.scala
package json

import org.json4s.JValue
import org.json4s.Xml.toJson

import scala.xml.Elem

object ScalaXml extends App {
  val xml: Elem =
    <body>
      <h1>title</h1>
      <div>
        <p>content</p>
      </div>
    </body>

  val json: JValue = toJson(xml)

  println(json) // => JObject(List((body,JObject(List((h1,JString(title)), (div,JObject(List((p,JString(content))))))))))
}

JValue形式をjsonの文字列にしたり、値の取り出しなどしたい場合は、Json4sをご参照ください。
json4s/json4s: A single AST to be used by other scala json libraries

余談

今回この問題に取り組んで、初めてscalaのxmlリテラルについて知りました。JSXと同じようにコード内にhtmlを直書きできます。
intellijのReformat Codeできれいにインデントしてくれて見やすく便利ですね。

umeneri
都内にてScalaのサービス開発に従事しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away