Play Framework 2 JSON读取,反序列化一个变量

时间:2015-07-08 12:25:36

标签: json deserialization playframework-2.4

我正在使用Play Framework 2.4,我正在尝试使用Reads进行基本的JSON反序列化,但是我收到错误。这是代码:

case class Config(action: String)

和某处,

implicit val configReads: Reads[Config] = (
  (__ \ "action").read[String]
  )(Config.apply _)

我认为configReads已正确形成但我在“read”方法调用(符号未定义)上出现IDE错误,当我编译代码时出现以下错误:

Error:(30, 27) overloaded method value read with alternatives:
  (t: String)play.api.libs.json.Reads[String] <and>
  (implicit r: play.api.libs.json.Reads[String])play.api.libs.json.Reads[String]
 cannot be applied to (String => wings.common.json.Config)
      (__ \ "action").read[String]
                          ^

但是,如果不是尝试反序列化一个参数,而是在构造函数中声明一个带有两个参数的类,并且我编写代码来反序列化它,它就可以工作。

有人知道如何解决这个问题吗?

修改:

深入挖掘Google我发现Play 2.1.x this但我正在使用Json库播放Play 2.4.1,所以不应该发生这个问题。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

implicit val configReads: Reads[Config] = (
  (__ \ "action").read[String]
  ) map Config.apply