2013-06-20 34 views
1

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

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

回答

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