Scala Json transformers-现有2个新字段

Scala Json transformers-现有2个新字段,scala,playframework-2.0,Scala,Playframework 2.0,使用json API,如何为以下内容编写转换器: { "name":"John Doe", "number":22 } 到 使用字符串操作可以实现这一点,但如何从这两个字段中选取值并将其应用于它们?您可以这样做: val json = Json.obj( "name" -> JsString("John Doe"), "number" -> JsNumber(22) ) val transformed = json.transform( __.js

使用json API,如何为以下内容编写转换器:

{
"name":"John Doe",
"number":22
}

使用字符串操作可以实现这一点,但如何从这两个字段中选取值并将其应用于它们?

您可以这样做:

val json = Json.obj(
   "name" -> JsString("John Doe"),
   "number" -> JsNumber(22)
)

val transformed = 
   json.transform(
      __.json.update(
        (__ \ 'slug).json.put(JsString(
          (json \ "name").as[String].replace(' ', '-') + "-" + (json \ "number").as[Int]
        ))
      )
   ).get

Ok(transformed.toString())
//{"name":"John Doe","number":22,"slug":"John-Doe-22"}

这是一篇关于play json转换的好文章。

你读过关于的文档了吗?上面的文档是针对Play 2.1.x的,您使用的是该版本吗?这里什么是
Ok
?它是从哪里导入的?它是play框架方法,使用它只是扩展play.api.mvc.Controller
val json = Json.obj(
   "name" -> JsString("John Doe"),
   "number" -> JsNumber(22)
)

val transformed = 
   json.transform(
      __.json.update(
        (__ \ 'slug).json.put(JsString(
          (json \ "name").as[String].replace(' ', '-') + "-" + (json \ "number").as[Int]
        ))
      )
   ).get

Ok(transformed.toString())
//{"name":"John Doe","number":22,"slug":"John-Doe-22"}