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

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

当在html中呈现时,它显示为“示例文本\”。正确的方法是什么?


当前回答

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

除了双引号,如果想在JSON带引号字符串中包含反斜杠,还必须转义反斜杠。然而,如果你打算在转义序列中使用反斜杠,显然你不应该转义它。

其他回答

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

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

对于那些想使用开发人员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} ",
    ],

试试这个:

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

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

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

如果你想创建以下javascript对象的json

{time: '7 "o" clock'}

那么你必须按照下面的方式写

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

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

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

结果将是

{time: "7 "o" clock"}

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

第一个调用将对"text2"值进行编码:

今天我们将以" examp文字"为起点每天新的目的地会向我们驶来

今天我们的导游工作\每天新的目的地会向我们驶来

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

今天我们的导游工作\每天新的目的地会向我们驶来

每天我们的实地旅行\\\每天新的目的地会向我们驶来

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