喷射Json格式

喷射Json格式,json,scala,spray,spray-json,Json,Scala,Spray,Spray Json,所以我有一个返回Future[JsValue]的方法: def foo(): Future[JsValue] = { Json toJson Json.obj("name" -> "John","surname" -> "Doe") } 以及使用它的喷洒路线: path("foo") { onComplete(foo()) { case Success(value) => complete(value) } } 我希望在客户端获得的是Json: {name: "J

所以我有一个返回Future[JsValue]的方法:

def foo(): Future[JsValue] = {
 Json toJson Json.obj("name" -> "John","surname" -> "Doe")
}
以及使用它的喷洒路线:

path("foo") {
 onComplete(foo()) {
  case Success(value) => complete(value)
 }
}
我希望在客户端获得的是Json:

{name: "John", surname:"Doe"}
但我在客户机上得到的是一个对象:

Object{fields: [{name: {value: "John"}}, {surname: {value: "Doe"}}]}
如何获得所需的Json?

试试这个

onComplete(foo()) {
  case Success(value) => complete(value.toString)}

至少它对我有效。

您看到了这一点,因为
Map[String,String]
的默认spray marshaller执行您观察到的操作。如果你想要
{name:“John”,姓氏:“Doe”,foo:“bar”}
,当你看到一个通用的
映射[String,String]
时,你需要编写你自己的封送员。或者,如果你只有名字和姓氏,你可以考虑使用CASE类吗?有更多的字段,但我确实创建了CASE类。我认为有一些更简单的解决办法