如何在JSON中转义双引号

时间:2013-03-26 12:46:15

标签: json

我正在尝试显示双引号,但它显示了一个反斜杠:

"maingame": {
    "day1": {
        "text1": "Tag 1",
        "text2": "Heute startet unsere Rundreise \\\"Example text\\\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.</strong> "
    }
}

在html中渲染时显示为\"Example text\"。什么是正确的方法?

7 个答案:

答案 0 :(得分:388)

试试这个:

"maingame": {
  "day1": {
    "text1": "Tag 1",
     "text2": "Heute startet unsere Rundreise \" Example text\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.</strong> "
  }
}

(引号前面只有一个反斜杠(\)。

答案 1 :(得分:18)

它显示反斜杠,因为你也在逃避反斜杠。

除了双引号外,如果要在JSON引用字符串中包含反斜杠,还必须转义反斜杠。但是,如果您打算在转义序列中使用反斜杠,显然您不应该逃避它。

答案 2 :(得分:17)

使用\\\"的时间和地点。好的,如果你像我一样,当我发现这个帖子后,当我意识到自己在做什么时,你会感觉像傻一样。

如果您正在制作.json文本文件/流并从那里导入数据,那么在双引号之前只有一个反斜杠的主流回答:\"是您正在寻找的那个。 / p>

但是,如果你像我一样,并且你想让w3schools.com“Tryit Editor”在JSON.parse(文本)的输出中有双引号,那么你正在寻找的那个是三反斜杠双引号\\\"。这是因为您在HTML <script>块中构建文本字符串,并且第一个双反斜杠将一个反斜杠插入到字符串变量中,然后以下反斜杠双引号将双引号插入到字符串中,以便生成脚本字符串包含标准答案中的\",JSON解析器将其解析为双引号。

<script>
  var text="{";
  text += '"quip":"\\\"If nobody is listening, then you\'re likely talking to the wrong audience.\\\""';
  text += "}";
  var obj=JSON.parse(text);
</script>

+1:因为它是一个JavaScript文本字符串,所以双反斜杠双引号\\"也会起作用;因为双引号不需要在单个带引号的字符串中进行转义,例如'\"''"'会产生相同的JS字符串。

答案 3 :(得分:8)

请注意,这通常发生在内容已被&#34;双重编码&#34;时,意味着编码算法被意外调用了两次。

第一个电话会编码&#34; text2&#34;值:

FROM: Heute startet unsere Rundreise&#34;示例文字&#34;。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

TO: Heute startet unsere Rundreise \&#34;示例文字\&#34;。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

第二个编码然后再次转换它,转义已转义的字符:

FROM: Heute startet unsere Rundreise \&#34;示例文字\&#34;。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

TO: Heute startet unsere Rundreise \\\&#34;示例文字\\\&#34;。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

因此,如果您负责在此处实施服务器,请检查以确保没有两个步骤尝试对相同内容进行编码。

答案 4 :(得分:3)

如果你想在JSON中使用\\转义双引号来逃避它。

示例如果要创建以下javascript对象的json

+--------+------------+-------------+
| userid |  billdate  | paymentdate |
+--------+------------+-------------+
| user1  | 2017-06-01 | 2017-06-02  |
| user1  | 2017-05-01 | 2017-06-01  |
| user1  | 2017-05-01 | 2017-05-02  |
| user2  | 2017-06-01 | 2017-06-30  |
| user2  | 2017-05-01 | 2017-05-30  |
+--------+------------+-------------+

然后你必须按照以下方式写作

{time: '7 "o" clock'}

如果我们使用'{"time":"7 \\"o\\" clock"}'

解析它
JSON.parse()

结果将是

JSON.parse('{"time":"7 \\"o\\" clock"}')

答案 5 :(得分:1)

要转义导致JSON数据出现问题的反斜杠,我使用此函数。

//escape backslash to avoid errors
var escapeJSON = function(str) {
    return str.replace(/\\/g,'\\');
};

答案 6 :(得分:0)

对于那些希望使用开发人员powershell的人。这是要添加到您的settings.json中的行:

"terminal.integrated.automationShell.windows": "C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe",
"terminal.integrated.shellArgs.windows": [
    "-noe",
    "-c",
    " &{Import-Module 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\Common7\\Tools\\Microsoft.VisualStudio.DevShell.dll'; Enter-VsDevShell b7c50c8d} ",
    ],