如何在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\"
。 什么是正确的方法?
尝试这个:
"maingame": { "day1": { "text1": "Tag 1", "text2": "Heute startet unsere Rundreise \" Example text\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.</strong> " } }
(在引号前只有一个反斜杠( \
))。
它显示反斜杠,因为你也逃避反斜杠。
除了双引号,如果你想在你的JSON引用string中包含一个,你还必须转义反斜杠。 但是,如果你打算在转义序列中使用反斜杠,显然你不应该逃避它。
什么时候和在哪里使用\\\"
而如果你像我一样,你会感觉和我在发现这个主题后意识到自己在做什么时一样愚蠢。
如果你正在制作一个.json文本文件/stream,并从那里导入数据,那么在双引号之前只有一个反斜杠的主stream答案是你正在寻找的。
但是,如果你像我一样,你正在试图让w3schools.com“Tryit编辑器”在JSON.parse(文本)的输出中有一个双引号,那么你正在寻找的是三反斜杠双引号\\\"
,这是因为您在HTML <script>
块中构build了文本string,而第一个双反斜杠将单个反斜杠插入到stringvariables中,接下来的反斜杠双引号将双引号插入该string以便生成的脚本string包含来自标准答案的\"
,JSONparsing器将会将其parsing为双引号。
<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文本string,双反斜杠双引号\\"
也可以工作;因为双引号不需要在单引号string内转义,例如'\"'
和'"'
导致相同的JSstring。
请注意,这通常发生在内容已被“双重编码”时,意味着编码algorithm被意外地调用了两次。
第一次调用将编码“text2”值:
FROM: Heute startet unsere Rundreise“示例文本”。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。
TO: heute startet unsere Rundreise \“Example text \”。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。
第二个编码然后再转换它,转义已经转义的字符:
FROM: Heute startet unsere Rundreise \“Example text \”。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。
TO: Heute startet unsere Rundreise \\\“Example text \\\”。 Jeden Tag wird ein neues Reiseziel angesteuert bis wir。
所以,如果你负责在这里实现服务器,请检查以确保没有两个步骤试图编码相同的内容。
为了避免导致JSON数据问题的反斜杠,我使用这个函数。
//escape backslash to avoid errors var escapeJSON = function(str) { return str.replace(/\\/g,'\\'); };
如果你想逃避双引号JSON使用\\来逃避它。
例如,如果你想创build下面的JavaScript对象的JSON
{time: '7 "o" clock'}
那么你必须按照以下的方式写
'{"time":"7 \\"o\\" clock"}'
如果我们使用JSON.parse()
parsing它,
JSON.parse('{"time":"7 \\"o\\" clock"}')
结果将是
{time: "7 "o" clock"}