[英]Convert a String to JSON in scala.html file
我目前在scala.html文件中使用PropertyDTO的列表來用Play2填充視圖。 propertyDTO具有String屬性“ value”,其中包含JSON String。 我想將此字符串轉換為scala.html文件中的JSON對象,並遍歷JSON對象集合。 嘗試以下操作時,
val json = Json.parse(property.value),作為scala代碼中的[JsObject],它會打印表達式。 我想知道我的方法是否正確,如果不正確,是否有合適的解決方案。
代碼-> scala.html
@(propertyList : List[PropertyDTO])
@for(property <- propertyList){
@if(property.isInputProperty){
@if(property.propertyType=="BL"){
val json = Json.parse(property.value).as[JsObject]
}
}
}
我不建議在模板中執行此操作-具有模板,而不是將HTML生成直接嵌入到Scala代碼中,是為了將視圖邏輯與應用程序邏輯分開。 如果您將這樣的Scala代碼嵌入模板中,那么使用模板有什么意義呢?
最佳實踐是在調用模板之前准備好要渲染的所有數據,然后將其傳遞到模板中,並使模板盡可能啞,僅迭代和渲染值。
問題是,您需要通過在其前面加上@
來聲明要解釋為scala代碼的代碼。 線
val json = Json.parse(property.value).as[JsObject]
會被解釋為HTML,因為在指示scala代碼的行中沒有@符號。 您可以做的是使用@{ ... }
聲明一個完整的包含scala代碼的塊。
例如,您可以將要理解的結果存儲在變量中,以便以后在模板中使用:
@import play.api.libs.json._
@validPropertiesAsJson = @{
for{
property <- propertyList
if property.isInputProperty
if property.propertyType == "BL"
} yield Json.parse(property.value).as[JsObject]
}
然后在模板中使用@validPropertiesAsJson
包含值。 可以在playframework文檔中找到更多信息: http ://www.playframework.com/documentation/2.2.0/ScalaTemplates
請記住,將盡可能少的邏輯放入模板中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.