Scalatra命令和验证嵌套对象

时间:2013-06-20 13:47:25

标签: scala scalatra

我是Scala和Scalatra的新手。我只是想知道,但是你如何使用Scalatra命令来验证嵌套对象,例如下面的图像作为整个对象验证的一部分?

{ "id" : 1,
  "name" : "First item",
  "images": [
    { "src" : "first_image.jpg" },
    { "src" : "second_image.jpg" },
    { "src" : "third_image.jpg" }    
  ]
}

1 个答案:

答案 0 :(得分:0)

从源代码看,只支持嵌套提取简单值。详情如下。

您可以使用嵌套路径从Json中提取值:

  val name: Field[String] = asType[String]("keyword.name")

这将从这个json中提取'test':

{keyword:{name:'test'}}

您可以在类org.scalatra.json.JsonValueReader中查找此提取的代码。该阅读器用于方法org.scalatra.commands.Command.bindTo。

关键来源是:

...
      val result = b.field.valueSource match {
        case ValueSource.Body => fieldBinding(data.read(name).right.map(_ map (_.asInstanceOf[fieldBinding.S])))
...

调用“_.asInstanceOf [fieldBinding.S]”在JValue对象上实现。此提取仅适用于简单类型(请查看此问题:How to parse JSON in Scala using standard Scala classes?)。