Json parse() 在 JavaScript 中不会转义 ”
Json parse() does not escape " in javascript
我有java对象,它被转换为JSON字符串,使用
String paramMap = new ObjectMapper().writeValueAsString(custPolicy.getParamMap());
model.addAttribute("testTypeMap", paramMap );
在.jsp页面中,在加载时,我正在尝试解析testTypeMap并获取对象;
var paramMap = JSON.parse('${testTypeMap}');
showTestType('File content', 'LINUX', paramMap);
该对象在其中一个字段中有双引号 ("),当它在 java 中转换为 JSON 刺痛时,它用反斜杠 () 转义,这就是为什么我们看到"''"(来自查看源代码)
var paramMap = JSON.parse('{"Filepath":"/home/status.txt","Search expression":"'""}');
但是上面的一行说,"未捕获的语法错误:意外的字符串"。
我看过几篇帖子,他们说它需要两个解析,一个用于javascript,一个用于JSON。我试图将 ''" 替换为 ''''" ;但是在 JavaScript 中 ''" 总是 ",所以我无法替换它;
有什么指示我在这里错过了什么吗?
问题是你没有将${testTypeMap}
中的字符串编码为 JavaScript 文字。 我不确定如何在您的框架中专门执行此操作,但它类似于对字符串进行 HTML 编码,但适用于 JavaScript。
然而!
在您的特定示例中,您可以避免使用JSON.parse
因为 JSON 已经采用 JavaScript 可以使用的格式。
var paramMap = ${testTypeMap};
showTestType('File content', 'LINUX', paramMap);
发送到浏览器的结果源如下所示:
var paramMap = {"Filepath":"/home/status.txt","Search expression":"'""};
实际上我不知道
如何在 javascript 中将 ''" 替换为 '''',因为 ''" 总是表示为 " (只有一个没有反斜杠的引号)。
因此,在使用杰克逊的ObjectMapper转换为JSON字符串后,我在服务器端进行了此替换,如下所示:
String paramMap = new ObjectMapper().writeValueAsString(custPolicy.getParamMap());
// need to replace any '" with ''" in javascript side
paramMap = paramMap.replace("'''"", "'''''"");
model.addAttribute("testTypeMap", paramMap );
现在在客户端,它如下所示:
var paramMap = JSON.parse('{"Filepath":"/home/cavirin/status.txt","Search expression":"''""}');
这工作正常,因为 JavaScript 解析已经在服务器端得到了处理。
相关文章:
- 正在转义javascript数组中的html字符
- OR 运算符,用于转义 JavaScript 中的未定义
- 正在转义Javascript中的特殊字符,以便在MySql中使用它们
- 转义javascript中的特殊字符以在javascript中使用它们
- 在传递给下一个函数之前转义 Javascript 调用
- 转义 JavaScript 中 querySelector 的前导数字类名
- 如何转义 JavaScript 正则表达式替换字符
- 在PHP中转义Javascript
- 如何取消转义 JavaScript 字符串文本值
- 从变量中的字符串转义 JavaScript 中的双引号
- 正确转义 javascript json 字符串中的换行符
- JavaScript - 转义 JavaScript Object 属性值中的单引号
- 如何正确使用 转义 javascript 进行 <%= link_to %>
- 从 ASP.NET 转义 JavaScript 特殊字符
- 在 PHP 中使用邮件函数时正确转义 JavaScript 文档代码中的特殊字符
- 正则表达式文本中的Unicode代码点转义-Javascript
- 正在转义JavaScript字符串
- 传递和转义JavaScript数组值
- 转义 JavaScript 中的特殊字符
- 在c#中构建(转义)JavaScript正则表达式