【发布时间】:2015-09-25 13:42:14
【问题描述】:
我需要从 MVC 应用程序生成一个 Javascript 文件,其中包含 Javascript(基于 Angular)框架所需的一些变量。
控制器会产生输出如
var currentUser = {userId: "jdoe", firstname: "John", lastname: "Doe"};
var somethingElse = [];
在您询问是否可以从 AJAX 调用中检索该信息之前,让我先说一下,目前是不可能的。
我想问是否有一种简单、优雅和健壮的方法来将通用 Java 对象编组为 Javascript 表示法。
到目前为止,我已经尝试过利用 JSON,但结果难看且不可靠
printWriter.println(MessageFormat.format("var currentUser = JSON.parse(''{0}'');", objectMapper.writeValueAsString(user)));
注意:
- JSON 语法引用属性名称,而 Javascript 没有。 JSON 和 Javascript 相似但不同。所以我需要解析 JSON 而不是写整个 JSON
- JSON 允许单引号
'但使用这样的语法 Javascript 会剪切字符串,所以我需要转义单引号(如果有) - 转义引号后,我不知道其他可能的陷阱
所以我想问一下是否有更简单的方法以更健壮但更智能的方式将这样的对象编组到 Javascript 中。
目前要求不使用 AJAX。如果可以执行“大规模”AJAX 调用,在一次调用中一次检索所有需要的变量,那将是永久的解决方案。
【问题讨论】:
-
您可以简单地将对象编组为 JSON,然后在从后端输出之前转义所有单引号(使用反斜杠 \)。此时,只需对其调用 JSON.parse 即可。
标签: javascript java web-applications