Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays scala request.body.asJson访问数组_Arrays_Json_Scala_Playframework_Playframework 2.0 - Fatal编程技术网

Arrays scala request.body.asJson访问数组

Arrays scala request.body.asJson访问数组,arrays,json,scala,playframework,playframework-2.0,Arrays,Json,Scala,Playframework,Playframework 2.0,在我的play Framework应用程序中,我向后端发送了一个json,在后端,我希望访问json中的数组 我试过这个: val processSteps = request.body.asJson.map{ json => (json \ "stepsData").asOpt[Object].map { steps => println(steps) } for (processStep <- steps) { processStep.map(_.val

在我的play Framework应用程序中,我向后端发送了一个json,在后端,我希望访问json中的数组

我试过这个:

val processSteps = request.body.asJson.map{
  json => (json \ "stepsData").asOpt[Object].map { steps =>
    println(steps)
}

for (processStep <- steps) {

  processStep.map(_.validate[ProcessStepTemplatesModel] match {

您应该在json验证中执行此操作,即在
asOpt
方法中:

(json \ "stepsData").asOpt[Array[ProcessStepTemplatesModel]]
如果在正文中使用其他字段,甚至可以为预期正文定义一个case类,并直接对其进行验证:

case class StepProcessingRequestData(
  stepsData: Array[ProcessStempTemplatesModel],
  ... // add your other fields, as defined in your JSON schema
)

object StepProcessingRequestData {
  implicit val reads = Json.reads[StepProcessingRequestData]
}

val processStepsOpt: Option[StepProcessingRequestData] = 
  request.body.asJson.flatMap(_.asOpt[StepProcessingRequestData])

您应该在json验证中执行此操作,即在
asOpt
方法中:

(json \ "stepsData").asOpt[Array[ProcessStepTemplatesModel]]
如果在正文中使用其他字段,甚至可以为预期正文定义一个case类,并直接对其进行验证:

case class StepProcessingRequestData(
  stepsData: Array[ProcessStempTemplatesModel],
  ... // add your other fields, as defined in your JSON schema
)

object StepProcessingRequestData {
  implicit val reads = Json.reads[StepProcessingRequestData]
}

val processStepsOpt: Option[StepProcessingRequestData] = 
  request.body.asJson.flatMap(_.asOpt[StepProcessingRequestData])

你能告诉我你的数据是什么样子吗

我的方法是,为stepsData设置一个案例类:

case class StepData(attributes ..)
然后有一个包装:

case class StepDataWrapper(stepsData : List[StepData])
然后在控制器中指定隐式格式:

import play.api.libs.json._

implicit val stepDataFormat = Json.format[StepData]

implicit val stepDataListWrapperFormat =Json.format[StepDataWrapper]
然后呢,

  val processSteps = request.body.asJson.asOpt[StepDataWrapper]
                     .map{ 
                     stepDataWrapper => stepDataWrapper.stepsData.map(println(_))
                     }

你能告诉我你的数据是什么样子吗

我的方法是,为stepsData设置一个案例类:

case class StepData(attributes ..)
然后有一个包装:

case class StepDataWrapper(stepsData : List[StepData])
然后在控制器中指定隐式格式:

import play.api.libs.json._

implicit val stepDataFormat = Json.format[StepData]

implicit val stepDataListWrapperFormat =Json.format[StepDataWrapper]
然后呢,

  val processSteps = request.body.asJson.asOpt[StepDataWrapper]
                     .map{ 
                     stepDataWrapper => stepDataWrapper.stepsData.map(println(_))
                     }

添加了上面定义的请求此案例类:StepData(steptitle:String,title:String)并按照上面的其他步骤进行操作。也许下面的操作可以帮助您:添加上面定义的请求此案例类:StepData(steptitle:String,title:String)并按照上面的步骤进行操作,它应该会起作用。也许下面这一点可以帮助你:第一个什么都不返回,第二个错误很多;)什么样的错误?在作用域中是否有隐式的
读取[StepProcessingRequestData]
?它会验证数组中的元素吗?第一个不会返回任何内容,第二个会返回大量错误;)什么样的错误?在作用域中是否有隐式的
读取[StepProcessingRequestData]
?它是否验证数组中的元素?