ToolConvoyToolConvoyv2.6
DEV

YAML 转 Properties — 将 YAML 配置转为 Java .properties 格式

将 YAML 配置转换为 Java .properties 格式。支持点号记法的嵌套、多行值与 Unicode 转义 —— 全部在客户端运行,无需上传。

● 本地运行 · 在您的标签页中生成页面加载以来工具发出的网络请求:0 次

YAML to Properties

Convert YAML configuration to Java .properties format. Flattens nested YAML into dot-notation properties. Works entirely in your browser.

Java .properties 文件是至今仍在广泛生产使用的最古老配置格式。它比 YAML、JSON、XML 作为配置语言都更早 —— java.util.Properties 类自 1996 年的 JDK 1.0 起就是 Java 的一部分 —— 并且仍然是 Spring Boot 的 application.properties、国际化资源包以及大多数尚未明确迁移到 YAML 的 Java 系统中默认的配置格式。它的格式很严格:每行一个 key=value 对,偶尔允许 : 作为替代分隔符,注释以 #! 开头。这种扁平结构意味着:带有嵌套配置段的 YAML 文件必须被扁平化为点号记法的键,数组必须被展开为带下标的键,所有 ISO 8859-1 之外的 Unicode 字符都必须转义为 \uXXXX 序列。

把 YAML 转换为 properties 的主要场景是迁移 Spring Boot 应用。Spring Boot 在 2014 年通过 application.yml 加入了 YAML 支持,YAML 凭借更简洁的语法、原生的嵌套以及 anchor 与 alias 支持,很快成为新项目的首选格式。但许多企业级 Spring 项目早在 2014 年之前就已存在,并在深度嵌套的构建流水线、基于 properties 的配置服务器或只读 .properties 的部署工具中扎根。把 application.yml 转换为 application.properties,可以在不重写部署基础设施的前提下打通迁移之路。

最后的交接提醒:如果输出的 .properties 文件要进入 Spring Boot 项目,请检查 YAML 中任何 Spring 特有的特性(基于 profile 的文档分隔符、spring.config.import 引用或 @activated@ Maven 过滤标记)在 properties 等价物中是否被正确处理。如果需要反向转换(properties 转 YAML),Properties-to-JSON 工具可以先把 .properties 转为 JSON,再由 JSON-to-YAML 工具接力完成。对于 Java 项目使用的其他配置格式,INI-to-JSON 工具覆盖 INI 文件,TOML 系列工具覆盖 TOML —— 它是 Spring Boot 第三种支持的配置格式。

广告

使用方法

  1. 粘贴你的 YAML 配置

    把 YAML 配置文件拖入或粘贴到输入框。解析器读取 YAML 1.2,并把嵌套映射扁平化为点号记法的键。数组会用下标记法展开:`servers[0].host`。

  2. 检查扁平后的键

    转换器会逐一显示即将写入 .properties 文件的键值对。嵌套的 YAML 会变成 `parent.child.grandchild=value`。数组会变成带下标的键。Latin-1 之外的 Unicode 字符会被转义为 `\uXXXX` 序列。

  3. 下载 .properties 文件

    可下载 ISO 8859-1 编码(.properties 的标准编码)或 UTF-8(现代 Java 支持)的 .properties 文件。输出包含一行时间戳注释头,并保留原始键的顺序。

常见问题

YAML 数组如何转成 .properties 的扁平格式?

YAML 数组会被扁平化为零基下标记法。`servers: [host1, host2]` 变成 `servers[0]=host1` 和 `servers[1]=host2`。对象数组则变成 `servers[0].host=host1`。这种下标方括号写法是 Java properties 消费者最常用的约定。

输出的 .properties 文件使用什么编码?

默认是 ISO 8859-1 加 Unicode 转义序列(`\uXXXX`)。这是 Java Properties API 定义的历史标准。需要现代 Spring Boot 应用(其原生读取 UTF-8 的 properties)时,可切换到 UTF-8 模式。

YAML 的多行字符串如何处理?

YAML 折叠标量(`>`)和字面块标量(`|`)会被合并为 .properties 输出中的单行,换行用 `\n` 转义序列表示。当值超过 80 个字符时,会添加 `\` 续行符。

YAML 注释会保留到 properties 输出中吗?

YAML 注释(`# comment`)会以 properties 注释(`# comment`)的形式保留在原键相对应的位置上。出现在映射条目之间的注释,会被放到对应 properties 键的前面。

限制说明

  • 不转换 Spring profile带有 Spring 风格 `spring.profiles` 键或多 profile 配置用 YAML 文档分隔符的 YAML 文件,会被作为单个扁平文件转换。请改用 Spring Boot 的 `spring.profiles.active` 属性来选择 profile。
  • 深层嵌套会产生很长的键名8 层深的 YAML 结构会产生类似 `app.component.subcomponent.feature.setting.option=value` 的键。Java 的 `Properties` 类以及大多数 Spring 属性解析器都能接受,但可读性会很差。
  • 多文档 YAML 不会被合并由 `---` 分隔的多文档 YAML 文件会被转换为多个独立的 .properties 文件,而不会合并。转换对话框允许你选择要转换的文档。

平台说明

macOS
Spring Boot 在 macOS 上原生读取 .properties 文件。当从基于 YAML 的项目迁移到遗留的 .properties 代码库时,这个浏览器工具是合适的 YAML Spring 配置转 .properties 选择。
Linux
命令行等价命令:`yq eval -o props input.yaml` 可处理简单的键值映射。本浏览器工具额外提供多行值处理、Unicode 转义和数组下标记法,这些都是 yq 的 props 输出所没有的。
Web
所有 YAML 解析与 properties 生成都在客户端完成。任何配置数据都不会离开你的浏览器 —— 转换内部应用配置是安全的。
广告
广告