我正在使用Scalatra编写一些JSON restful的测试,如下所示
class MyScalatraServletTests extends ScalatraSuite with FunSuite {
test("An valid request should return 200") {
get ("/rest/json/accc/B1Q4K3/1") {
status should equal (200)
body should include ("TEST")
}
}
}body预期是由Scalatra通过其JSON支持序列化的JSON。我的问题是如何将body转换回scala中的同一个case类实例,并大大简化测试?
发布于 2013-03-12 10:37:30
json4s可以直接用于从JSON值中提取案例类。
import org.json4s._
import org.json4s.jackson.JsonMethods._
val parsedBody = parse(body)
parsedBody.extract[MyCaseClass]您还可以使用类似XPath的表达式询问JSON。
val parsedBody = parse(body)
val email = (parsedBody \ "user" \ "email").values
email should be ("example@example.org")您可以调用.values从JValue( JSON文档的内部表示形式)获取原始Scala值(String,Int,等等)。
有关所有这些的示例,请参阅json4s简介。
发布于 2013-01-05 05:29:19
我不确定您使用的是哪个JSON序列化程序或原始类的结构,但是如果您想反序列化JSON回Scala,我建议您使用Jackson Scala模块:
https://stackoverflow.com/questions/14157045
复制相似问题