spark 儲存json資料遇到問題——json4s使用(一)
阿新 • • 發佈:2019-02-03
執行結果:import org.json4s._ import org.json4s.JsonDSL._ import org.json4s.jackson.JsonMethods._ object JsonStudy { def main(args: Array[String]): Unit = { val a = parse(""" { "numbers" : [1, 2, 3, 4] } """) println(a.toString) val b = parse("""{"name":"Toy","price":35.35}""", useBigDecimalForDouble = true) println(b.toString) val c = List(1, 2, 3) val d = compact(render(c)) println(d) val e = ("name" -> "joe") val f = compact((render(e))) println(f) val g = ("name" -> "joe") ~ ("age" -> 35) val h = compact(render(g)) println(h) val i = ("name" -> "joe") ~ ("age" -> Some(35)) val j = compact(render(i)) println(j) val k = ("name" -> "joe") ~ ("age" -> (None: Option[Int])) val l = compact(render(k)) println(l) //定義json println("===========================") //推薦這種方式,因為可以用在使用map val jsonobj = ( ("name" -> "xiaoming") ~ ("age" -> 12) ) println(jsonobj) println(compact(render(jsonobj))) val jsonobjp = parse( """{ "name":"xiaogang", "age":12 }""") println(jsonobjp) println(compact(render(jsonobjp))) //通過類生成json println("===========================") case class Winner(id: Long, numbers: List[Int]) case class Lotto(id: Long, winningNumbers: List[Int], winners: List[Winner], drawDate: Option[java.util.Date]) val winners = List(Winner(23, List(2, 45, 34, 23, 3, 5)), Winner(54, List(52, 3, 12, 11, 18, 22))) val lotto = Lotto(5, List(2, 45, 34, 23, 7, 5, 3), winners, None) val json = ("lotto" -> ("lotto-id" -> lotto.id) ~ ("winning-numbers" -> lotto.winningNumbers) ~ ("draw-date" -> lotto.drawDate.map(_.toString)) ~ ("winners" -> lotto.winners.map { w => (("winner-id" -> w.id) ~ ("numbers" -> w.numbers)) })) println(compact(render(json))) } }