首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Play framework v2.0中渲染JSON响应(来自GIT的最新构建)

如何在Play framework v2.0中渲染JSON响应(来自GIT的最新构建)
EN

Stack Overflow用户
提问于 2012-01-02 04:30:10
回答 3查看 29.6K关注 0票数 18

我正在尝试像这样呈现一些响应

代码语言:javascript
复制
def doAjax = Action { request =>
    object MyResult {
        val resultCode = 0
        val resultTextMessage = "sss" 
    }
    Ok(Json(MyResult)) // It's not working anymore - not compiling in v2.0!
}   

但是如何使用Play 2.0将我的对象(MyResult)映射到JSON呢?在使用scala模块的Play 1.0中,我成功地完成了以下操作:

代码语言:javascript
复制
def dosomeaj = {
    object MyResult{
        val resultCode = 0
        val resultTextMessage = "sss" 
    }
    Json(MyResult) // It's working in 1.0
}    
EN

回答 3

Stack Overflow用户

发布于 2012-01-02 13:04:47

Play 2与Jerkson一起发布

代码语言:javascript
复制
case class Blah(blah: String)
import com.codahale.jerksHon.Json._
def act = Action { implicit request =>
    Ok(generate(parse[Blah](request.body.asText.get))).as("application/json")
}

这段代码将反序列化和重新序列化json。

有关更多信息,请访问https://github.com/codahale/jerkson

票数 6
EN

Stack Overflow用户

发布于 2012-01-02 07:24:08

我现在已经在Play集成测试中找到了这个解决方案。

需要在app/models/MyResult2.scala中定义以下内容:

代码语言:javascript
复制
case class MyResult2(resultCode: Int, resultTextMessage: String)

object Protocol {
    implicit object MyResult2Format extends Format[MyResult2] {
        def writes(o: MyResult2): JsValue = JsObject(
            List("resultCode" -> JsNumber(o.resultCode),
                "resultTextMessage" -> JsString(o.resultTextMessage)
            )
        )

        def reads(json: JsValue): MyResult2 = MyResult2(
            (json \ "resultCode").as[Int],
            (json \ "resultTextMessage").as[String]
        )
    }
}

在此之后,您可以像这样在您的控制器类中使用它:

代码语言:javascript
复制
import play.api._
import play.api.mvc._
import play.api.libs.json._
import models._
import models.Protocol._

object Application extends Controller {    
    def doAjax = Action { request =>
        Ok(toJson(MyResult2(0, "Ney")))
    }
}

现在需要一些手动的静态编组代码。

票数 5
EN

Stack Overflow用户

发布于 2014-11-10 19:55:21

您可以使用'play.api.mvc.as‘

代码语言:javascript
复制
  def demo = Action {

    ....


    Ok(jsonString).as("text/json")

  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8695335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档