play framework 中耍 JSON 基礎

本文深入探讨Scala中JSON处理的方法,包括使用JsValue及其子类型如JsNumber、JsString和JsObject进行数据转换。通过实例展示了如何利用Json工具类实现序列化和反序列化,以及如何定义隐式写入器来转换自定义类型。

首先要知道有JsValue

JsNumber, JsString, JsObject, JsArray.. 都是 JsValue的小孩(專業一點說extends from JsValue trait)

Json是工具類(object喔) Josn.obj, Json.arr, Json.toJson

JsPath 按字面上來說就是Json的路徑相關的, 主要描述 key 而不是 value 就是橘色些字

{
  "name" : "Watership Down",
  "location" : {
    "lat" : 51.235685,
    "long" : -1.309197
  }
}

JsObject 相當於一個完整的tuple, Object的意思是有lat和long這兩的屬性的對象

  "location" : {
    "lat" : 51.235685,
    "long" : -1.309197
       }

JsNumber 就可以理解成 "long" : -1.309197, 我想其他的JsString, JsArray..大家也就懂了

耍些工具, 耍之前不要忘了 import play.api.libs.json._

val jsonString: JsString = Json.toJson("I can be JsString")

val jsonNumber: JsNumber = Json.toJson(100)

val jsonArrayOfInts = Json.toJson(List(1,2,3))

val jsonEmployee = Json.toJson(new Employee("henry")) //別想了, 哪有這麼好

Json.toJson[T](T)(implicit writes: Writes[T]) 用的這麼爽是因為有隱式參數,幫你轉換

來些code

case class Employee(name: String)

implicit val employeeWrites = new Writes[Employee] {

  def writes(employee: Employee) = Json.obj(

    "name" -> employee.name

    )

}

val jsonEmployee = Json.toJson(new Employee("henry")) //可以轉換了, 隱式會自動把employeeWrites 當成writes參數

转载于:https://www.cnblogs.com/jHenry/p/3723587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值