2016-04-25 61 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