play framework 中耍 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