繁体   English   中英

为什么我使用JSON Read with Play framework 2.3得到“应用程序不带参数”?

Why I get “Application does not take parameters” using JSON Read with Play framework 2.3?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想为Play framework 2.3x中的一些Scala模型类编写JSON验证。 我按照说明使用JSON Reads( https://playframework.com/documentation/2.3.x/ScalaJsonCombinators )。 但我得到“应用程序不带参数”错误,我不知道如何解决这个问题。

这是我的代码。

package models

import play.api.libs.json._
import play.api.libs.json.Reads._
import play.api.libs.functional.syntax._
import reactivemongo.bson.BSONObjectID
import java.util.Date

case class ArtifactModel(
                          _id: BSONObjectID,
                          name: String,
                          createdAt: Date,
                          updatedAt: Date,
                          attributes: List[AttributeModel],
                          stateModels: List[StateModel])

case class AttributeModel(
                           name: String,
                           comment: String)

case class StateModel(
                       name: String,
                       comment: String)

object ArtifactModel {
  implicit val artifactModelReads: Reads[ArtifactModel] = (
      (__ \ "_id").readNullable[String] ~
      (__ \ "name").read[String] ~
      (__ \ "createdAt").readNullable[Long] ~
      (__ \ "updatedAt").readNullable[Long] ~
      (__ \ "attributes").read[List[AttributeModel]] ~
      (__ \ "stateModels").read[List[StateModel]]
    )(ArtifactModel) // here is the error: "Application does not take parameters"


  implicit val attributeModelReads: Reads[AttributeModel] = (
      (__ \ "name").read[String] ~
      (__ \ "comment").read[String]
    )(AttributeModel)

  implicit val stateModelReads: Reads[StateModel] = (
      (__ \ "name").read[String] ~
      (__ \ "comment").read[String]
    )(StateModel)
}

你能帮助我吗? 在Scala / Play中进行JSON验证的任何解决方案或建议都表示赞赏。

1 个回复

Reads对象的类型与apply方法的类型不同。 例如, readNullable[String]结果是Option[String] ,而不是String BSONObjectIdDate 这个编译,但你可能需要使用一些地图:

  implicit val artifactModelReads: Reads[ArtifactModel] = (
(__ \ "_id").read[BSONObjectID] ~
  (__ \ "name").read[String] ~
  (__ \ "createdAt").read[Date] ~
  (__ \ "updatedAt").read[Date] ~
  (__ \ "attributes").read[List[AttributeModel]] ~
  (__ \ "stateModels").read[List[StateModel]]
)(ArtifactModel.apply _)

你可以在阅读之后,像这样( CONVERT_TO_DATE是虚构的):

  implicit val artifactModelReads: Reads[ArtifactModel] = (
(__ \ "_id").read[BSONObjectID] ~
  (__ \ "name").read[String] ~
  (__ \ "createdAt").read[String].map( s=>CONVERT_TO_DATE(s) ) ~
  (__ \ "updatedAt").read[Date] ~
  (__ \ "attributes").read[List[AttributeModel]] ~
  (__ \ "stateModels").read[List[StateModel]]
)(ArtifactModel.apply _)
1 JSON读/写错误:应用程序不接受参数

我正在尝试为其中许多值可能为null的case类编写一个Read / Write值。 按照Play框架的教程,我将其编写为 但是,我仍然遇到相同的问题,IntelliJ告诉我,上提方法不起作用,因为“应用程序不接受参数”。 案例类是 其他案例类也会发生相同的情况 ...

4 Play Framework 2.3 - 不检测更改

每当我对我的Play应用程序进行更改时,它都不会重新编译(自动重新加载?)更改,当我刷新页面时,我会看到旧版本的应用程序。 每次我对源代码进行更改时都必须Control + D这样做并不方便。 我尝试了旧的应用程序,创建了新的应用程序, activator clean , activat ...

6 应用程序不带参数

对于那些scala专家,我正在为我的大学课程编写代码,编译器抛出一个错误,我不知道如何解决。 以下代码应该只调用一个菜单选项: 编译器不喜欢这一行: 更具体地说它不喜欢 因此,我对函数式编程和scala完全不熟悉,任何提示或线索都会很棒。 谢谢 ...

2016-11-19 17:08:15 1 4694   scala
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM