gpt4 book ai didi

java - 在java中转义单引号并尝试在json blob中呈现转义的引号

转载 作者:行者123 更新时间:2023-12-03 11:57:08 26 4
gpt4 key购买 nike

在我的 Web 应用程序中,我尝试在服务器上构建一个 JSON 字符串,然后将其传递给客户端,以便我可以使用一些客户端 JavaScript 对其进行处理。这在大多数情况下都有效,但是当 JSON 字符串包含单引号时,JavaScript 就会中断。

JSON 基本上是一个 map 列表,它被传递到我的 GSP 页面的 mappings 变量中。然后我评估该字符串以将其转换为 JavaScript 对象:

var json = eval('(${mappings})');

mappings被求值时,完整的JavaScript表达式看起来像这样:

var json = eval('([{"targetId":123,"targetName":"this isn't going to work"}])');

很明显,在这种情况下,当 mappings 包含单引号(“...this isn't going...”)时,JSON 字符串提前终止,浏览器报告 JavaScript 错误。

我本以为这很容易解决,但是在java方面,当我尝试使用

' 替换为 \'
json.replaceAll("'", "\\'")

我明白了:

"...this isn't going to work..."

即它根本没有改变!

如果我尝试双重转义反斜杠,即

json.replaceAll("'", "\\\\'")

我明白了:

"...this isn\\'t going to work..."

这也不正确。如何用单个反斜杠和引号替换单引号,以便在客户端呈现字符串时可以正确评估它?

最佳答案

不要使用eval。如果您要将 JSON 字符串插入 JavaScript,只需插入即可。

var json = ${mappings};

无需转义,该字符串已经是有效的 JavaScript。 (如果您确实需要解析 JSON,请使用 JSON.parse() 而不是 eval()。它会显着减慢您的代码速度。)

关于java - 在java中转义单引号并尝试在json blob中呈现转义的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com