我是 Scala 和 Scalatra 的新手。我只是想知道,但是您如何使用 Scalatra 命令来验证嵌套对象,例如下面的图像作为整个对象验证的一部分?
{ "id" : 1,
"name" : "First item",
"images": [
{ "src" : "first_image.jpg" },
{ "src" : "second_image.jpg" },
{ "src" : "third_image.jpg" }
]
}
从源代码来看,似乎只支持简单值的嵌套提取。详情如下。
您可以使用嵌套路径从 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?)。