JSP属性JSON对象正在Javascript中删除转义字符

时间:2018-05-03 19:56:52

标签: javascript json jsp escaping

我有一个服务器端控制器,它使用Jackson添加一个转换为JSON的Java对象属性:

ObjectMapper mapper = new ObjectMapper();
model.addAttribute("commentObj", mapper.writeValueAsString(commentObject);

我的commentObject有一个字段“comments”,其中包含JSON需要转义的引号(“)。当我从commentObject的JSP中进行简单的打印时,一切看起来都不错:

[{"commentId":123,"comments": "this \"test\" is here"}]

如您所见,报价正确转义(\“)。

我的问题是此页面上的javascript也需要访问此对象。所以当我运行以下内容时:

<script>
    var test = ${commentObj};
</script>

如果我查看'test'var,则注释字段现在显示如下:

"this "test" is here" 
vs. 
"this \"test\" is here"

这会导致问题,因为JSON.parse()会在'test'上抛出错误,因为它不再正确形成JSON。

所以我的问题是,如何在保留转义字符的同时将我的commentObj设置为javascript对象,以便我能正确地JSON.parse?

1 个答案:

答案 0 :(得分:1)

抱歉,在生病的漫长的一天结束时写下来,现在只是意识到'test'var最终成为一个完全形成的JS对象。所以我能够使用它。

那说,我还有这个怎么回事的问题?在我看来,它应该作为一个JSON字符串,我需要调用JSON.parse。有人有解释吗?