我有一个服务器端控制器,它使用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?
答案 0 :(得分:1)
抱歉,在生病的漫长的一天结束时写下来,现在只是意识到'test'var最终成为一个完全形成的JS对象。所以我能够使用它。
那说,我还有这个怎么回事的问题?在我看来,它应该作为一个JSON字符串,我需要调用JSON.parse。有人有解释吗?