411

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

"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\". 正确的方法是什么?

4

7 回答 7

575

Try this:

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

(just one backslash (\) in front of quotes).

于 2013-03-26T12:49:19.573 回答
57

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

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

但是,如果您像我一样,并且试图让 w3schools.com“Tryit 编辑器”在 JSON.parse(text) 的输出中使用双引号,那么您要查找的就是三重引号反斜杠双引号\\\"。这是因为您在 HTML<script>块中构建文本字符串,并且第一个双反斜杠将单个反斜杠插入到字符串变量中,然后下面的反斜杠双引号将双引号插入到字符串中,以便生成的脚本字符串包含\"from标准答案和 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 字符串。

于 2016-08-12T16:54:12.967 回答
19

它显示了反斜杠,因为您也在转义反斜杠。

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

于 2014-02-22T15:47:47.143 回答
18

如果您想在 JSON 中转义双引号,请使用 \\ 转义它。

例如,如果您想创建以下 javascript 对象的 json

{time: '7 "o" clock'}

那么你必须按以下方式写

'{"time":"7 \\"o\\" clock"}'

如果我们使用解析它JSON.parse()

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

结果将是

{time: "7 "o" clock"}
于 2017-06-14T11:49:48.210 回答
11

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

第一次调用将编码“text2”值:

来自: Heute startet unsere Rundreise “示例文本”。Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

TO: Heute startet unsere Rundreise \"示例文本\"。Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

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

来自: Heute startet unsere Rundreise \"示例文本\"。Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

TO: Heute startet unsere Rundreise \\\"示例文本\\\"。Jeden Tag wird ein neues Reiseziel angesteuert bis wir。

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

于 2014-11-20T16:40:23.667 回答
6

为了避免导致 JSON 数据出现问题的反斜杠,我使用了这个函数。

//escape backslash to avoid errors
var escapeJSON = function(str) {
    return str.replace(/\\/g,'\\');
};
于 2016-05-26T15:24:26.297 回答
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} ",
    ],
于 2020-06-01T21:49:11.647 回答