2013-06-20 184 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?)。