Инструменты разработчика · Конвертеры синтаксиса
Как работает преобразование JSON в YAML: цитирование, отступы и стиль потока
· Как это работает
JSON ямл рабочий процесс разработчика
От JSON до YAML похоже на удаление фигурных скобок, но преобразователь принимает реальные решения о том, какие строки нуждаются в кавычках и когда использовать блочный стиль, а не потоковый. В этом посте рассматриваются эти решения.
Фигурные скобки исчезнут, а куда деваются кавычки? — полезные данные JSON, преобразованные в YAML, и в результате смесь заключенных в кавычки и пустых строк.
Удаление фигурных скобок и кавычек не превращает объект JSON в заслуживающий доверия файл YAML. Преобразователь должен решить, как будут представлены вложенное сопоставление, массив, строка и новая строка, а также останется ли значение, похожее на число или логическое значение, текстом. Инженеру DevOps, перемещающему определение службы API в Compose, необходимо, чтобы эти решения были предсказуемыми, прежде чем копировать результат в каталог развертывания. Преобразование меняет синтаксис, а не фактическую конфигурацию службы.
JSON (почти) уже YAML — почему входные данные действительны YAML 1.2 стиль потока еще до начала преобразования
YAML 1.2 рассматривает синтаксис JSON как разрешенное подмножество стиля потока для обычных данных в форме JSON, что объясняет, почему объект JSON уже близок к YAML. Но полезное преобразование обычно переключается на удобочитаемые блочные отступы. Ввод сначала анализируется как JSON; произвольные команды оболочки никогда не выполняются. ToolAcre загружает YAML через ограниченную схему по обратному пути, отклоняет небезопасные теги и ограничивает расширение псевдонимов, поэтому преобразователь нельзя использовать для создания экземпляров произвольных объектов из ненадежного тега !!js/function.
Блочный стиль в сравнении со стилем потока — как конвертер выбирает сопоставления и последовательности на основе отступов вместо фигурных скобок и квадратных скобок, и что означает глубина отступа.
В блочном стиле используются пары ключей /value с отступом и строки, начинающиеся с тире для элементов массива: строка изображения под services.web имеет отступ под web, а порты становятся последовательностью. Стиль потока сохраняет фигурные скобки и скобки, подобные JSON. ToolAcre использует дамп js-yaml с отступом в два пробела по умолчанию, без ссылок и настройкой неограниченной ширины строки, а не просто заменяет знаки препинания регулярным выражением. Изменение ширины отступа влияет на читаемость, а не на фактические ключи или порядок массива.
Какие строки должны оставаться в кавычках — значения, которые в противном случае стали бы логическими значениями, числами, значениями NULL или датами, а также строки с двоеточиями, хэшами или ведущими пробелами.
Некоторые строки должны быть заключены в кавычки, чтобы пережить другой синтаксический анализатор: «false» должно оставаться текстом, а не логическим значением false, «2026-09-28» не должно автоматически становиться датой в потребителе YAML 1.1, а двоеточие, за которым следует пробел, может быть ошибочно принято за синтаксис сопоставления. Дамп ToolAcre выбирает защитные кавычки, включая варианты совместимости для старых читателей YAML. Цитирование обычной ссылки на изображение с двоеточием не всегда требуется, а необоснованное удаление имеющихся кавычек может нарушить цикл обратного пути. Проверьте типы, а также внешний вид.
Многострочные строки — как новая строка внутри строки JSON может стать литералом (|) или свернутым (>) блочным скаляром
Строка JSON, содержащая фактическую новую строку, может быть отображена как блочный скаляр YAML с помощью |. Форма |- удаляет последний символ новой строки, тогда как | сохраняет его; > сложил бы некоторые разрывы строк в пробелы. Эти индикаторы описывают данные, а не форматируют их. Дампер ToolAcre выбирает представление, которое может считывать исходную строку, а не всегда принудительно использовать один стиль. После преобразования внимательно проверьте многострочное значение среды или сертификат: ошибки отступов здесь могут изменить то, что получает приложение.
Рабочий пример: преобразование определения службы — вложенного объекта JSON в YAML, с аннотацией каждого решения по кавычкам и стилю.
Для конкретного объекта JSON используйте services.web с изображением "example/web:1", портами ["8080:80"] и ключами среды DEBUG="false", RELEASE="2026-09-28" и MESSAGE="первая строка\nвторая строка". ToolAcre выдает изображение: example/web:1 и список портов; DEBUG становится в кавычках «false», RELEASE — в кавычках «2026-09-28», а MESSAGE использует блок |- с двумя строками с отступом. Каждый выбор защищает исходные типы. Запустите двустороннюю проверку панели перед сохранением как compose.yaml; конвертер не может определить, существует ли образ и запустится ли служба.
Что это не охватывает — добавление комментариев, привязок или пользовательского порядка ключей, ничего из которых не существует в исходном коде JSON для переноса.
JSON не имеет комментариев, привязок или псевдонимов, которые нужно сохранять: преобразователь не может восстановить их из ввода, который их никогда не содержал. Он также не может сделать вывод об управлении секретами, специфичном для Compose, пользовательском порядке ключей или достоверности API-версии Kubernetes. Два файла YAML могут сериализовать одни и те же данные, но использовать разные стили пробелов и кавычек. Просмотрите результат в целевой программе и избегайте вставки реальных токенов API во внешние службы конвертации.
Вывод: преобразование — это повторная сериализация с правилами — и как панель конвертеров синтаксиса создает YAML в вашем браузере.
Преобразование — это анализ и повторная сериализация в соответствии с набором правил, а не удаление знаков препинания. Преобразователи синтаксиса выполняют эти операции в вашем браузере; локально проверьте конфиденциальную конфигурацию и выполните проверку на небольшом тестовом объекте, прежде чем применять метод к более крупному файлу. Если значение в кавычках меняет тип на обратном пути, форматирование не является просто косметическим и требует изучения.