【问题标题】:Play Framework Serial Tuple3播放框架串行元组3
【发布时间】:2017-02-24 22:03:33
【问题描述】:

我正在尝试使用 Scala 和 Play。我想返回一个元组,在这种情况下是一个 Tuple3,但可以是任何大小的元组。我想将元组序列化为 JSON,但 Play 似乎不知道如何序列化元组。

我只是想做一些非常简单的事情,如下所示

def getClient(clientId: Int) = Action {
    val result = ("I", "AM", "TUPLE")
    Ok(Json.toJson(result))
}

找不到类型(字符串、字符串、字符串)的 Json 序列化程序。尝试为此类型实现隐式写入或格式。

我尝试过类似的方法,但它似乎只适用于 Tuple2。

val seq = Seq[(String,String)](("attr1"->"val1"),("attr2"->"val2"))


val s = Json.toJson(seq.map(e => Json.obj((e._1 -> e._2))))
 Ok(s).as(JSON)

【问题讨论】:

  • 为什么要将 Tuple3 渲染为 Json?你希望你的 Json 看起来如何?如果您知道这一点,您可以编写自己的隐式作家。但是,您是否有不想使用案例类的原因?
  • 如果我的服务类方法返回 Tuple (Client, Seq[Project]),我想将其序列化为 Json 以返回给客户端。在 Java 中,我只是将它们包装到 DTO 对象中。想知道是否可能需要在 Scala 中做同样的事情。
  • 好的.. 但是你期待什么 JSON,究竟是什么?

标签: scala playframework-2.0


【解决方案1】:

你可以像这样创建一个案例类。

case class MyCaseClass(string1: String, string2: String, string3: String)

那么你必须用

添加一个隐式写入器
implicit val myCaseClassFormat = Json.format[MyCaseClass]

那你就可以Json.toJson(MyCaseClass("I", "AM", "TUPLE"))

【讨论】:

  • 这就是我最终做的,与 Java 相同的方法
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2013-02-20
  • 2016-12-23
  • 1970-01-01
相关资源
最近更新 更多