我是Scala和Scalatra的新手。我只是想知道,但是你如何使用Scalatra命令来验证嵌套对象,例如下面的图像作为整个对象验证的一部分?
{ "id" : 1,
"name" : "First item",
"images": [
{ "src" : "first_image.jpg" },
{ "src" : "second_image.jpg" },
{ "src" : "third_image.jpg" }
]
}
答案 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?)。