将JSON数据引导到Scala PlayFramework模板中

5

目标是从用Scala编写的模型/视图模型转换为原始JSON,以便在视图模板中引导,避免在页面加载后发送JSON数据请求。

以下是我一直在尝试但没有成功的示例:

@(todos: play.api.libs.json.JsValue)
@import play.api.libs.json.Json

<html>
   <head>...</head>
   <body>...</body>

   <script>
      var todos = JSON.parse(' @Json.stringify(todos) ');
   </script>
</html>

基本上,它会输出许多引用文本,其效果如下:
[{&quot;id&quot;:&quot;:&quot;294858e2-c9eb-4f50-9eac-47b257573d83&quot;}] 

我在Google和PlayFramework文档中没有找到太多有用的信息,希望能得到一些帮助。

这里实际上是哪里出了问题? - Mikesname
1
默认情况下,模板引擎将对您的数据进行HTML引用,因此请尝试使用@Html(Json.stringify(todos))来直接呈现它。查看HTML输出以进行验证。您还可能需要完全限定todos参数的JsValue类型,例如play.api.libs.json.JsValue,因为据我所知它不是默认的模板导入。 - Mikesname
@Mikesname,你正确地猜到了问题所在。而且你使用 @Html 的建议完美解决了问题。如果你能把你的建议发表为答案,我会立即接受它。 - Nadir Muzaffar
1个回答

8

Play模板引擎会转义您渲染到HTML中的任何字符串,这将彻底破坏您的JSON。

要原样输出,请使用@Html(Json.stringify(todos)),如此处所述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接