play json库简介
所属分类 play
浏览量 720
Play JSON库 基于 jackson
JSON对象和case class 互相转换
JSON数据合法性验证
com.typesafe.play:play-json_2.12:2.9.2
JsValue trait 所有JSON类型的父类
JsString
JsNumber
JsBoolean
JsObject
JsArray
JsNull
对于基本类型T(例如String, Int, ...) 以及 Seq[T] 已经提供默认的隐式转换
自动将其转换成对应的JSON类型
Json.obj("name" -> JsString("tiger"))
Json.obj("name" -> "tiger")
Json.obj("names" -> JsArray(Seq(JsString("cat"), JsString("dog"))))
Json.obj("names" -> Seq("cat", "dog"))
整数和浮点数 使用 JsNumber 表示
JSON操作
构建一个 JsObject 对象
// 直接构建
val json =
Json.obj(
"name" -> "tiger",
"emails" -> Json.arr("123456@dyyx.com","abc@dyyx.com"),
"address" -> Json.obj(
"province" -> "zhejiang",
"city" -> "hangzhou"
)
)
// 从JSON字符串构建
val json =
Json.parse("""
{
"name": "tiger",
"emails": ["123456@dyyx.com","abc@dyyx.com"],
"address": {
"province" : "zhejiang",
"city" : "hangzhou"
}
}
""")
与 case class 隐式转换 需要声明
import play.api.libs.json._
implicit val addressFormat = Json.format[Address]
implicit val personFormat = Json.format[Person]
// case class -> JSON object
val person = Person("tiger", List("123456@qq.com"), Address("zhejiang", "hangzhou"))
val json : JsValue = Json.toJson[Person](person)
//JSON object -> case class
val p1:Person = Json.fromJson[Person](json).get
val p2:Person = json.as[Person]
val p3:Person = json.asOpt[Person].get
完整代码
https://gitee.com/dyyx/hellocode/blob/master/demo/scala/playjsondemo/src/main/java/hello/JsonDemo.scala
上一篇
下一篇
SBT依赖 % 与 %% 的区别
scala模式匹配中的@
Scala foldLeft foldRight
akka typed actor 实例之hello
akka typed actor 实例之 echo
scala技术栈新人学习指南