skb*_*skb 1 json scala playframework
我正在使用Scala + Play构建一个简单的Web服务器.我无法弄清楚如何接受JSON请求并将其反序列化为我预定义类型的对象.我需要帮助1)下载一个支持良好的JSON包,2)在我的代码中导入包来解析HTTP请求,3)实际解析一些JSON.
以下是我在#1的SBT文件中输入的内容:
libraryDependencies += "org.json4s" %% "json4s-native" % "3.2.9"
Run Code Online (Sandbox Code Playgroud)
以下是我为#2导入它的方法:
import org.json4s._
import org.json4s.native.JsonMethods._
Run Code Online (Sandbox Code Playgroud)
这是我尝试在我的操作中解析一些JSON的地方:
package controllers
import play.api._
import play.api.mvc._
import play.api.libs.json.Json
import org.json4s._
import org.json4s.native.JsonMethods._
object Application extends Controller {
case class Credentials(username: String, password: String)
def login = Action { request =>
Ok(Json.obj("message" -> "You tried to log in as: " + parse(request.body).extract[Credentials].username))
}
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?我在运行时遇到错误,说:"play.PlayExceptions $ CompilationException:编译错误[controllers.Application.parse.type不接受参数]"
你正遭受命名空间污染.您的Application控制器parse从play.api.mvc.Controller特征继承对象,并在命名空间中import org.json4s.native.JsonMethods._包含它自己的对象parse.我很惊讶这甚至编译.使其更明确将有效.从导入中删除通配符,并显式调用JsonMethods.parse.
正如这些意见所暗示的那样,这一切都是不必要的.Play内置的json库工作得很好,所以我建议你阅读它们并使用它们.还有很多与Play JSON相关的其他SO帖子.
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |