Как избежать двойных кавычек в 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". Каков правильный путь?

4059   6  

6 ответов:

попробуйте это:

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

(только одна обратная косая черта (\) перед кавычками).

Он показывает обратную косую черту, потому что вы также избегаете обратной косой черты.

помимо двойных кавычек, вы также должны избегать обратных косых черт, если вы хотите включить их в свою строку в кавычках JSON. Однако если вы собираетесь использовать обратную косую черту в escape-последовательности, очевидно, вы не должны избегать ее.

когда и где использовать \\" вместо. Хорошо, если вы похожи на меня, вы будете чувствовать себя так же глупо, как и я, когда я понял, что я делаю после того, как нашел эту нить.

если вы делаете .текстовый файл/поток json и импорт данных оттуда, а затем основной ответ потока только одной обратной косой черты перед двойными кавычками:\" - это тот, который вы ищете.

однако, если вы похожи на меня, и вы пытаетесь получить w3schools.com "Tryit Editor", чтобы иметь двойной котировки в выходные данные в формате JSON.разбор (текст), то тот, который вы ищете, это тройная обратная косая черта двойные кавычки \\". Это потому, что вы строите свою текстовую строку в 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.

обратите внимание, что это чаще всего происходит, когда содержимое было "дважды закодировано", что означает, что алгоритм кодирования был случайно вызван дважды.

первый вызов будет кодировать значение "text2":

от: сегодня стартуют наши Rundreise "пример текста". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

TO: сегодня стартуют наши Rundreise \"пример\". Jeden Tag wird ein neues Reiseziel angesteuert bis ВИР.

вторая кодировка затем преобразует его снова, экранируя уже экранированные символы:

от: сегодня стартуют наши Rundreise \"пример\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

TO: Heute startet unsere Rundreise \\\ " пример текста\\\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

Итак, если вы несете ответственность за выполнение серверу, проверьте конечно, нет двух шагов, пытающихся кодировать одно и то же содержимое.

чтобы избежать обратных косых черт, которые вызывают проблемы для данных JSON, я использую эту функцию.

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

если вы хотите избежать двойной кавычки в JSON, используйте \\, чтобы избежать ее.

пример, если вы хотите создать json следующего объекта javascript

{time: '7 "o" clock'}

затем вы должны написать следующим образом

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

если мы разберем его с помощью JSON.parse()

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

результат будет

{time: "7 "o" clock"}

Comments

    Ничего не найдено.