2016-04-25 63 views
1

我正在使用scala模板與playframework。我特林讀取JSON的值,但我正在逐漸JSError斯卡拉模板不能json

JsError(名單((/ 「活動\」 陸上 「\」 桑尼維爾」,列表(ValidationError(error.path.missing,WrappedArray() )))))

這裏是我的JsonString

rfrdetails = { 
    "active": { 
     "onshore": { 
      "sunnyvale": 10, 
      "cupertino": 20, 
      "sfo": 8 
     } 
    } 
} 

我template.scala.html

@(rfrdetails : String) 

@import play.api.libs.json._ 
@rfrjsonex(label:String) = @{ 
    println(label) 
    var json: JsValue = Json.parse(rfrdetails) 
    ((__ \ label).read[Int]).reads(json) 
} 

如下調用上述可重用代碼。當我給的代碼塊

@rfrjsonex(label:String) = @{ 
    println(label) 
    var json: JsValue = Json.parse(rfrdetails) 
    ((__ \ "active"\"onshore"\"sunnyvale").read[Int]).reads(json) 
} 

json的路徑在哪裏am'I腳麻

<tr> 
<td>@rfrjsonex("\"active" + "\\" + "\"onshore\"" + "\\" + "\"sunnyvale\"")</td> 
</tr> 

的可重用的代碼工作正常。不知道它是否很愚蠢。從錯誤中,我可以看到JsError在「active」之前有「/」,不確定它如何被追加。 JsError(名單((/「活動\」陸上「\」桑尼維爾」

任何幫助將提前感激。謝謝。

+0

第一次海報格式化的問題 – dinotom

回答

2

的\符號是不是文字,它是用Scala的中間符號使用的方法系統。

__ \ "a" \ "b" 

是語法糖

(JsPath.\("a")).\("b") 

所以試圖打包路徑作爲字符串,然後作爲一個參數是沒有意義的傳遞。你只能通過在字符串段米到每個方法,但您需要知道您準備提前多少級別嘗試進入JsValue結構。

+0

謝謝。這有幫助。 – user3290656

+2

我現在將JsPath本身作爲參數傳遞。 ((JsPath。\(「active」))。\(「onshore」)\(「sunnyvale」))' – user3290656