Como escaping aspas duplas no JSON

Eu estou tentando mostrar aspas duplas, mas mostra uma das barras invertidas:

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

Quando a renderização no html é mostrada como \"Example text\" . Qual é o caminho correto?

Tente isto:

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

(apenas uma barra invertida ( \ ) na frente das aspas).

Está mostrando a barra invertida porque você também está escapando da barra invertida.

Além de aspas duplas, você também deve escaping das barras invertidas se quiser include uma em sua string citada em JSON. No entanto, se você pretende usar uma barra invertida em uma seqüência de escape, obviamente você não deve escaping dela.

Quando e onde usar \\\" vez disso. OK, se você é como eu, você se sentirá tão bobo quanto eu quando percebi o que estava fazendo depois que encontrei este tópico.

Se você estiver criando um arquivo / arquivo de texto .json e importando os dados de lá, então a resposta do stream principal de apenas uma barra invertida antes das aspas duplas: \" é a que você está procurando.

No entanto, se você é como eu e está tentando fazer com que o “Tryit Editor” do w3schools.com tenha aspas duplas na saída do JSON.parse (texto), então o que você está procurando é o triplo. Aspas duplas \\\" . Isso é porque você está construindo sua cadeia de texto dentro de um bloco HTML , e a primeira barra invertida insere uma única barra invertida na variável string e a seguinte aspas duplas insere a aspa dupla em a string para que a string de script resultante contenha o \" da resposta padrão e o analisador JSON analise isso apenas entre aspas duplas.

  

+1: uma vez que é uma cadeia de texto JavaScript, uma dupla aspas duplas \\" também funcionariam; porque as aspas duplas não precisam de escape dentro de uma única sequência entre aspas, por exemplo '\"' e '"' resultam na mesma cadeia JS .

Observe que isso ocorre com mais frequência quando o conteúdo é “duplamente codificado”, o que significa que o algoritmo de codificação foi chamado acidentalmente duas vezes.

A primeira chamada codificaria o valor “text2”:

FROM: Heute startet unsere Rundreise “Texto de exemplo”. Você está lendo wird ein neues Reiseziel angesteuert bis wir.

Para: Heute startet unsere Rundreise \ “Exemplo de texto \”. Você está lendo wird ein neues Reiseziel angesteuert bis wir.

Uma segunda codificação converte-a novamente, escapando dos caracteres já escapados:

A partir de: Heute startet unsere Rundreise \ “Exemplo de texto \”. Você está lendo wird ein neues Reiseziel angesteuert bis wir.

Para: Heute startet unsere Rundreise \\\ “Exemplo de texto \\\”. Você está lendo wird ein neues Reiseziel angesteuert bis wir.

Portanto, se você for responsável pela implementação do servidor aqui, verifique se não há duas etapas tentando codificar o mesmo conteúdo.

Para escaping das barras invertidas que causam problemas nos dados JSON, uso essa function.

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

se você quiser escaping aspas duplas no uso de JSON \\ para escaping.

exemplo, se você quiser criar json do seguinte object javascript

 {time: '7 "o" clock'} 

então você deve escrever da seguinte maneira

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

se nós analisarmos usando JSON.parse()

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

resultado será

 {time: "7 "o" clock"}