ToolConvoyToolConvoyv2.6
DATA

Properties 转 JSON — 将 Java .properties 文件转换为 JSON

将 Java .properties 文件转换为 JSON。支持点号记法的嵌套、Unicode 转义与多行值 —— 全部在浏览器中完成,无需上传。

● 本地运行 · 零拷贝流水线页面加载以来工具发出的网络请求:0 次

Properties to JSON

Convert Java .properties files to JSON. Supports nested keys (database.host → nested object). Works entirely in your browser.

Java .properties 文件是主流配置格式中最古老的一种,比 XML 配置、YAML、TOML 和 JSON 都出现得更早 —— 它在 JDK 1.0(1995 年)随 java.util.Properties 类一同发布。语法精简到足以撑过三十年而不需改动:每行一个键值对,#! 开头的可选注释,反斜杠用作行末续接符,Unicode 转义用于非 ASCII 字符。正是这种长久的生命力,让生产环境里仍存在比维护它们的开发者还要「年长」的 .properties 文件;而把这些文件转成 JSON,正是把遗留 Java 服务迁移到现代技术栈时的第一步。

定义这次转换的核心设计抉择是「点号记法嵌套」。一份 .properties 文件中如果有 database.hostdatabase.portdatabase.name 这样的键,在语义上其实就是在描述一个嵌套结构 —— 点号只是一种约定,并非规范的一部分。扁平模式的输出按原样保留键名,是稳妥的默认值,也是处理简单键值文件的合适选择;嵌套模式则从点号中推断层级,生成与之同构的 JSON 对象,是进行配置迁移时的合适选择 —— 这种场景下,目标格式天然就应当是有结构的。

Unicode 转义的解码是让手动转换变得痛苦的另一个源头。Java .properties 文件会把所有非 ASCII 字符编码为 \uXXXX 序列 —— こんにちは 这个单词会变成 \u3053\u3093\u306b\u3061\u306f。如果不先把这些转义解码,在文本编辑器里基本无法阅读包含日文、阿拉伯文或西里尔字母的 properties 文件。本工具会在转换过程中把它们全部解码,把一份在文本编辑器里读不下去的文件,化作在任何编辑器或浏览器里都能顺畅阅读的 JSON。

广告

使用方法

  1. 粘贴 .properties 文件

    把 .properties 文件的内容粘贴到输入框中。解析器会读取键值对,处理行末的反斜杠续行符,解码 Unicode 转义(`\uXXXX`),并解析反斜杠转义的字符。

  2. 选择嵌套模式

    扁平模式按原样保留键名(`com.example.host` → `{"com.example.host": ...}`)。点号记法嵌套会沿点号切分,生成嵌套对象(`com.example.host` → `{"com": {"example": {"host": ...}}}`)。

  3. 复制或下载 JSON

    把 JSON 复制到剪贴板,或下载为 .json 文件。输出是已格式化(pretty-print)的 JSON,键默认按字母序排序,除非显式保留输入顺序。

常见问题

点号记法嵌套如何处理重叠的键前缀?

如果文件中同时存在 `com.example.host=localhost` 和 `com.example=value`,嵌套算法会把较浅层级的值提升为与嵌套子项并存: `{"com": {"example": {"_value": "value", "host": "localhost"}}}`。出现这种冲突时会显示一条警告,便于你核查转换结果。

注释会被保留到 JSON 输出中吗?

不会 —— .properties 中的注释(以 `#` 或 `!` 开头的行)会被剥离。如果你需要在值之外同时保留元数据,可以改用扁平模式并手动添加一个 `comments` 键,或者直接换成本身就支持注释的 YAML 格式。

Unicode 转义序列是如何处理的?

Java .properties 文件会把所有非 ASCII 字符编码为 `\uXXXX` 序列。工具会在转换时把这些序列解码为实际的 Unicode 字符。例如,`message=\u3053\u3093\u306b\u3061\u306f` 会被转换为 `"message": "こんにちは"`。

能处理 Spring Boot 的 application.properties 吗?

可以 —— Spring Boot 的属性文件采用相同的语法。Profile(`application-dev.properties`)和占位符引用(`${other.key}`)都会保留为字面字符串。如果需要完整的 Spring 配置解析,请使用 Spring Boot 官方工具链;本工具仅负责格式转换。

JSON 输出中布尔值和数字的类型如何处理?

默认所有值都是 JSON 字符串(这是稳妥的默认值 —— .properties 的值始终是字符串)。开启「类型推断」开关后,`true`、`false`、`yes`、`no`、`on`、`off` 会被转换为布尔值,看上去像整数或浮点数的字符串会被转换为数字。该推断遵循 Java 在属性值强制转换方面的约定。

限制说明

  • 不解析占位符`${var}` 占位符引用和 Spring 属性展开都会保留为字面字符串。如果需要真正的占位符解析,请使用专门的属性处理框架。
  • 不支持 XML 形式 .propertiesJava 也支持基于 XML 的 .properties 格式(`<!DOCTYPE properties>`)。本工具只处理 key=value 文本格式。如需处理 XML 形式的属性,请使用 XML 转 JSON 转换器。
  • 混合深度的点号键会产生警告如果启用了嵌套模式,且部分键分为 2 段、相邻的其他键却分为 3 段,那么生成的 JSON 会出现层级深浅不一的情况。输出仍然是合法的 JSON,但结构可能与预期不符。

平台说明

macOS
IntelliJ IDEA 和 Eclipse 对 .properties 文件都提供了良好的可视化支持。当需要把聊天或邮件里的一段 properties 配置片段转成 JSON、再交给非 Java 工具使用时,本浏览器工具是合适的选择。
Linux
如果偏好命令行方式,`properties-to-json`(npm 包)可以做同样的事情。本浏览器工具则额外提供了点号记法嵌套开关,以及交互式的类型推断预览。
Web
完全在客户端运行;加载完成一次后即可离线使用。
广告
广告