1

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

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

1 回答 1

0

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

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

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

这将从这个 json 中提取“测试”:

{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?)。

于 2014-01-14T11:19:24.353 回答