播放框架 Json 输出问题

Play framework Json output issue

我有一个简单的动作输出一个 json 对象字符串,像这样:

Ok(toJson(Map(
  "results" -> result_lists
)))

这一切正常。但如果我这样做:

Ok(toJson(Map(
  "action" -> action_string, // a Scala String
  "results" -> result_lists  // a Scala List
)))

我得到了

No Json serializer found for type scala.collection.immutable.Map[String,java.io.Serializable]

编译错误...有什么问题?

正如其他人之前在评论中发表的那样,Map 的类型不是框架可以反序列化为 Json 的东西,但您可以轻松摆脱 Map:

scala> val s = "hello"
s: String = hello

scala> val list = List(1,2,3)
list: List[Int] = List(1, 2, 3)

scala> Json.obj("somestring" -> s, "somemap" -> list)
res0: play.api.libs.json.JsObject = {"somestring":"hello","somemap":[1,2,3]}

然后可以根据需要通过操作返回生成的对象。