Как экранировать кавычки в json
Перейти к содержимому

Как экранировать кавычки в json

C #: Как я могу использовать скобки в кавычках в JSON?

Если это не существует, я автоматически генерирую это.

Например, это C # -Code, где я использую строку напрямую:

Теперь проблема в том, что строка не работает таким образом, потому что C # сделает кавычки буквальными и затем сохранит их в string s , что приведет к

Которая является ошибочной json-строкой, потому что кавычки не экранированы.

Превращение всей строки в буквальное приводит к тому же результату.

Я что-то упускаю?

5 ответов

\» добавляет экранированные кавычки, чтобы C # не заканчивал строку, но нарушал JSON. Чтобы экранировать кавычки в JSON, вам нужно добавить обратную косую черту \\ , и JSON должен быть:

Лучший способ создать правильный JSON — это сериализовать анонимные объекты (если у вас нет подходящих моделей).

ПРИМЕЧАНИЕ. Вы также можете использовать строку Verbatim.

С дословными строками косая черта, просто косая черта и не является escape-символом. Чтобы вставить цитату, используйте двойные двойные кавычки ( «» ). Также сохраняются переводы строки, что позволяет легко создавать многострочные строки без некоторой комбинации возврата каретки ( \r ) и перевода строки ( \n ). Их можно часто легче читать — обратите внимание на последовательность из 4 двойных кавычек в конце строки.

Если вы хотите создать файл Json, первым делом вы должны использовать сериализацию объекта. Это избавит вас от необходимости экранировать символ в строковой переменной.

Для дословной строки начинайте с ожидаемой строки: «TestString»: «This is a \»\»»
И добавляйте DQuote перед каждым DQuote => «»TestString»»:»»This is a \»»\»»»»

Для простой строки вы должны экранировать каждый специальный символ с помощью \ .
«TestString»: «This is a \»\»»
=> \»TestString\»:\»This is a \\\»\\\»\»

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

\ «Используется C # для экранирования кавычек, а также JSON. Это означает, что:

Если вы поместите этот действительный текст JSON в файл:

И читать это так:

Тогда это будет аналогично вводу текста в строку, например, так:

И оба дадут вам вывод

Если я правильно понял ваш вопрос, вы просто хотите добавить специальный символ в строку JSON. Просто добавьте их так:

Как FOR JSON экранирует специальные и управляющие символы (SQL Server)

В этом разделе описано, как предложение FOR JSON в инструкции SQL Server SELECT экранирует специальные символы и представляет управляющие символы в выходных данных JSON.

На этой странице описывается встроенная поддержка JSON в Microsoft SQL Server. Общие сведения об экранировании и кодировании в формате JSON см. в статье 2.5 RFC по JSON (https://www.ietf.org/rfc/rfc4627.txt).

Экранирование специальных символов

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

Специальный символ Экранированные выходные данные
Кавычки («»)
Обратная косая черта (\) \\
Косая черта (/) \/
Отмена \b
Перевод страницы \f
Новая строка \n
Возврат каретки \r
Горизонтальная табуляция \t

Управляющие символы

Если исходные данные содержат управляющие символы, предложение FOR JSON кодирует их в выходных данных JSON в формате \u<code> , как показано в следующей таблице.

Управляющий символ Закодированные выходные данные
CHAR(0) \u0000
CHAR(1) \u0001
. .
CHAR(31) \u001f

Пример

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

Дополнительные сведения о JSON в SQL Server и базе данных SQL Azure

Видео Майкрософт

Наглядные инструкции по встроенной поддержке JSON в SQL Server и базе данных SQL Azure см. в следующих видео.

Типы данных JSON

В JSON значение может быть одним из шести типов данных:

  • cтрока;
  • число;
  • логический;
  • null;
  • объект;
  • массив.

Эти типы данных описаны ниже.

Примитивные типы

Тип данных Описание
Строка Любая последовательность символов Юникода, вставленная между двойных кавычек. Некоторым символам может потребоваться экранирование (см. ниже).
Число Десятичное значение без лишнего начального нуля; может содержать цифры от 0 до 9. Число может быть отрицательным (-10), дробью (.5), а также может быть степенью 10 с префиксом e, E, + или -.
Логический Может быть true или false.
Null Пустой.

Структурные типы

Тип данных Описание
Объект Объект JSON — это неупорядоченный набор пар имя/значение, вставленных между фигурных скобок. Объект может содержать ноль или несколько пар имя/значение, в таком случае они разделяются запятыми.
Массив Массив JSON — это упорядоченный набор значений, который позволяет хранить список значений. Массив начинается с левой квадратной скобки [ и завершается правой квадратной скобкой ]. Его значения разделяются запятой.

Экранирование символов

При работе со строками некоторые символы необходимо экранировать с помощью обратной косой черты \. Например, чтобы использовать двойную кавычку внутри строки, вам нужно её экранировать. В противном случае любое приложение при чтении данных будет думать, что ваша двойная кавычка помечает конец строки и обрежет строку. Это в итоге прервёт импорт данных, поскольку приложение пытается интерпретировать оставшуюся часть строки.

Вот список символов, которые необходимо экранировать в JSON-файле.

Символ Название юникода и его код Как экранировать
« Quotation mark (U+0022 )
\ Reverse solidus (U+005C ) \\
/ Solidus (U+002F ) \/
Backspace (U+0008 ) \b
Form feed (U+000C ) \f
Line feed (U+000A ) \n
Carriage return (U+000D ) \r
Horizontal tab (U+0009 ) \t

Вы также можете использовать шестнадцатеричный эквивалент для экранирования символа, например, \u002f или \u002F для представления символа косой черты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *