2014-10-07 176 views
0

我正在Scala写一个Play 2.3.2应用程序。 我正在写一个统计控制器,查询我的mongodb数据库获取一些信息。 现在我试图实现一种方法,返回与用户关联的所有标签。 我得到JSON格式的HTTP请求如下所示:从JSon请求获取字符串

{ 
    "user": "[email protected]" 
} 

我想解析JSON请求和获取字符串联想到了JSON的“用户”字段,如果JSON是正确的,我想用String对象做一些工作,否则我想返回一个BadRequest响应。

我的方法实现是这样的:

def userEmail = Action.async { request => 
     val userEmail: String = request.body.asJson.map { json => 
         json.validate[String].map { 
          //if the json congaing the "user tag" return the instance, get the instance, otherwise return a BadRequestInstance 

         } 

     } 
     def elaborate(user: String)= { 
     //some work 
     } 
     elaborate(userEmail) 
} 

我怎么能作出这样的?

+1

阅读文件! https://www.playframework.com/documentation/2.3.x/ScalaJson – johanandren 2014-10-07 08:40:30

+0

我解决使用\“用户”,并使用as [String]将JsonString强制转换为String对象,谢谢。 我在文档搜索之前,但我没有找到任何答复,谢谢。 – 2014-10-07 09:57:19

回答

1

由于johanandren提及读playframework文档应该解决您的问题。

提示:我会定义case类和隐式读取以将json数据转换为case类型。

case class User(email: String) 
implicit val userReads = (
    (JsPath \ "email").read[String] 
)(User.apply _)