Конвертер .properties в JSON
Конвертируйте файлы Java .properties в JSON с вложенными ключами, определением типов и комментарием над каждым ключом в $comments. Работает полностью в браузере.
Файл Java .properties разбирается здесь по правилам java.util.Properties: разделители =, : и пробел, комментарии # и !, продолжение строки обратным слэшем, escape-последовательности \uXXXX. На выходе — JSON: ключи с точками вроде app.cache.ttl по умолчанию становятся вложенными объектами, числа и булевы значения получают настоящие типы JSON, а комментарий, стоящий прямо над свойством, сохраняется в поле $comments. Пустые строки и комментарии, отделённые от следующего свойства пустой строкой, в JSON не попадают. Всё считается прямо в браузере.
О конвертере Properties в JSON
Формат .properties (key=value, key:value или key value, комментарии # или !) со времён первых версий API java.util.Properties служит стандартом для конфигурации и ресурсных бандлов i18n. Здесь он читается по синтаксису, который задаёт java.util.Properties, — с продолжением строки через завершающий обратный слэш и unicode-последовательностями \uXXXX, — а полученный JSON удобно просматривать, сравнивать или передавать в сборку на JavaScript. Свойство app.cache.ttl=60 при вложении по точкам превращается в { "app": { "cache": { "ttl": 60 } } }, строка "false" после определения типов становится настоящим boolean, а строки # или !, стоящие прямо над свойством, попадают в поле $comments.
Вам также может понадобиться
Как конвертировать .properties в JSON
- 1
Вставьте файл .properties
Скопируйте содержимое в поле ввода или откройте иконкой колбы пример с комментарием и ключами app.*. Ключ от значения может отделяться знаком =, двоеточием или пробелом.
- 2
Настройте разбор
В Advanced options можно отключить определение типов или вложение по точкам, сменить разделитель и решить, хранить комментарии в $comments или пропускать их.
- 3
Получите JSON
Строки-продолжения с обратным слэшем в конце склеиваются, escape-последовательности вроде \u00e9 и \: раскодируются, каждый блок комментариев, примыкающий к свойству, привязывается к нему — и только после этого ключи с точками вкладываются друг в друга.
- 4
Сохраните результат
Скопируйте JSON или скачайте файл .json; иконка смены направления ведёт на JSON в Properties для обратной конвертации.
Источники
- Java SE — java.util.Properties
Официальная документация Java API, определяющая формат файла .properties, включая синтаксис комментариев, разделители и правила переноса строк, которым следует этот парсер.
- RFC 8259 — The JSON Data Interchange Format
Спецификация IETF для формата JSON, который производит этот инструмент.
Связанные инструменты
JSON в Properties
Конвертируйте объект JSON обратно в формат Java .properties, с разворачиванием ключей с точками и восстановлением комментариев.
Env в JSON
Конвертируйте .env файл в JSON — аналогичный сценарий для конфигурационных файлов с переменными окружения.
JSON Formatter
Вставьте необработанный JSON и мгновенно получите отформатированный, подсвеченный и провалидированный результат.
YAML в JSON
Конвертируйте конфигурационные файлы YAML в JSON и обратно — ещё одна распространённая пара форматов конфигурации.
Properties в JSON — часто задаваемые вопросы
- Насколько точно соблюдается формат Java Properties?
- Ключи и значения разбираются по правилам java.util.Properties: ключ и значение разделяются =, : или пробельным символом, комментарии начинаются с # или !, многострочное значение продолжается через обратный слэш в конце строки, а \uXXXX раскодируются. Если ключ встречается дважды, берётся последнее значение — как в Properties.load. Полной копией файла JSON при этом не будет: пустые строки и комментарии, которые не стоят прямо над свойством, отбрасываются.
- Раскодируются ли последовательности \uXXXX?
- Да. Например, \u00e9 превращается в é, а экранированное двоеточие \: — в обычный символ :. Поэтому ресурсные бандлы, где не-ASCII текст записан escape-последовательностями, попадают в JSON читаемым текстом.
- Как читаются многострочные значения?
- Строка, которая заканчивается обратным слэшем, продолжается на следующей: парсер склеивает такие строки в одно значение так же, как это делает java.util.Properties.
- Станет ли номер версии 1.2.3 числом?
- Нет, 1.2.3 остаётся строкой, как и 1.0 или 007: превращение в число изменило бы их при обратной записи. Числами становятся только обычные десятичные значения — 8080, 0.75, — а булевыми только точные true и false. Если отключить Infer types, текстом останется всё.
- Как server.port=8080 превращается во вложенный объект?
- При включённом «Dotted keys → nested» (по умолчанию разделитель — точка) server.port=8080 даёт { "server": { "port": 8080 } }. Отключив переключатель, вы получите одно плоское поле с ключом server.port.
- Сохраняются ли комментарии # и !?
- Только те, что относятся к свойству: блок строк # или ! прямо над ключом, без пустой строки между ними, попадает в $comments под путём этого ключа. Шапка файла, комментарий с пустой строкой после него, комментарий в конце файла и сами пустые строки не сохраняются. Значение «Ignore» для Comments в Advanced options даёт чистый JSON только со значениями.
- Отправляется ли файл на сервер?
- Нет, разбор целиком локальный, по сети ничего не уходит. Это важно для файлов properties с внутренними именами хостов или учётными данными.
- .properties или JSON — в чём разница?
- Java .properties — построчный текст «ключ-значение» для конфигурации приложений и ресурсных бандлов i18n, а JSON изначально поддерживает вложенность и типизированные значения. После конвертации файлы properties можно сравнивать как структурированные данные или импортировать в инструменты JavaScript/TypeScript, которые ждут JSON.