C #: Как я могу использовать скобки в кавычках в JSON?
Если это не существует, я автоматически генерирую это.
Например, это C # -Code, где я использую строку напрямую:
Теперь проблема в том, что строка не работает таким образом, потому что C # сделает кавычки буквальными и затем сохранит их в string s , что приведет к
Которая является ошибочной json-строкой, потому что кавычки не экранированы.
Превращение всей строки в буквальное приводит к тому же результату.
Я что-то упускаю?
5 ответов
\»
Лучший способ создать правильный 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 для представления символа косой черты.