支持嵌套对象、数组(- 列表或 [行内])、单双引号、# 注释与 | 多行文本。
源与目标相同时会自动切换目标,避免无意义转换。
所有处理都在你的浏览器本地完成,配置内容不会上传。点「⇅ 交换正反」会把转换结果放回输入框并交换两种格式,方便反向转换或链式转换(如 YAML → JSON → Properties)。
转换结果将显示在这里。
同一份配置在三种格式里的写法对照。
| 对比项 | JSON | YAML | Properties |
|---|---|---|---|
| 示例写法 | "server": {"port": 80} | server: port: 80 | server.port=80 |
| 可读性 | 括号引号多,机器友好 | 靠缩进表达层级,最简洁 | 扁平键值,简单直观 |
| 数据类型 | 数字/布尔/null 有类型 | 数字/布尔/null 有类型 | 所有值都是字符串 |
| 注释 | 不支持 | 支持 # | 支持 # / ! |
| 常见场景 | 接口数据、前端配置 | K8s、Docker Compose、CI | Java / Spring 配置 |
| 数组写法 | [1, 2] | - 1 列表或 [1, 2] | key[0]=1 |
格式转换不是无损的,以下差异需要特别留意。
| 问题 | 说明 |
|---|---|
| Properties 会丢失类型 | .properties 规范里值只有字符串,所以 port: 8080 转过去是 server.port=8080,再转回 JSON/YAML 时 8080 会变成字符串 "8080",需要数字的地方请手动调整。 |
| 缩进必须一致 | YAML 用缩进表示层级,请统一用 2 个空格,不要混用 Tab;同一层级缩进不一致时会直接报出具体行,不会给出错误结果。 |
| 冒号与 # 号 | 值里含冒号空格(如 hello: world)或 # 时请加引号;转换为 YAML 时这类有歧义的字符串会自动加双引号保证安全。 |
| 注释不保留到 JSON | JSON 标准不支持注释,YAML/Properties 里的注释在转换为 JSON 时会自然丢弃;对象的键值数据不受影响。 |
| 支持范围 | 覆盖日常配置所需:嵌套 map、列表(含 - 块写法与 []/{} 行内写法)、单双引号、|/> 多行文本。暂不支持锚点 &anchor、多文档 --- 等高级 YAML 特性。 |
⚠️ 本工具仅在浏览器本地解析并重新生成配置文本,不会上传、保存你粘贴的任何内容。
Properties 格式本身没有数据类型,经过它中转后数字与布尔会变为字符串;YAML 高级特性(锚点、多文档等)暂不支持。转换后的配置请结合实际使用场景核对后再上线。
开发中经常要在几种配置格式之间来回搬:K8s 与 Docker Compose 用 YAML,接口与前端用 JSON,Java/Spring 用 Properties。
手动改格式不仅慢,缩进、引号、逗号错一个整个配置就解析失败。
这个工具支持:
① 六种方向:YAML ⇄ JSON、YAML ⇄ Properties、JSON ⇄ Properties,任意互转;
② 嵌套与数组:支持多层 map、- 列表、[]/{} 行内写法与对象数组;
③ 注释与字符串:正确识别 # 注释、单双引号、|/> 多行文本,含冒号的值自动加引号;
④ 交换正反:一键把结果放回输入框并交换格式,可链式完成 YAML → JSON → Properties;
⑤ 错误定位:格式有误时给出具体原因与出错行内容,而不是生成半成品。
注意:Properties 只有字符串类型,经它中转后数字/布尔会变成字符串。
处理流程:
① 解析输入:按选定的源格式解析——JSON 走浏览器原生严格解析;YAML 自行实现缩进解析器,先剔除空行与注释,再按缩进深度递归构建 map/list,支持 - 块序列、[1,2]/{a:1} 行内 flow、单双引号、| 保留换行与 > 折叠空格;Properties 按行切分,= 或 : 分隔,点号 . 还原为嵌套对象,key[0] 还原为数组;
② 统一为内存对象:三种格式解析后都是同一份 JS 数据结构;
③ 生成目标:JSON 用带缩进的标准格式;YAML 递归输出缩进文本,简单数组用行内写法、含 :/# 或形似数字布尔的值自动加引号;Properties 展开为点号路径;
④ 交换与链式转换:交换正反会把输出回填为输入,因此可连续完成跨格式中转。
- 块序列、[]/{} 行内 flow、单双引号、# 注释、|/> 多行文本;生成 YAML 时对含冒号、形似数字/布尔的歧义值自动加引号;提供交换正反(链式转换)、节点/层级统计与精确错误行提示。纯浏览器本地运行,适配黑夜模式。
.properties 格式本身的特性:它只有“键=值”文本,值没有类型,8080 和 hello 一样都是字符串。转换工具不会臆测类型(否则 010-1234 这类电话号也可能被误转成数字)。需要数字/布尔类型时,建议以 JSON 或 YAML 为准,Properties 仅用于最终配置落地。key: value)。报错信息会带上无法识别的那一行内容,按提示调整该行及其上一行的缩进即可。&anchor 锚点定义、*alias 引用、>> 合并键以及 --- 多文档分隔等高级特性,遇到这些内容可能报解析错误。绝大多数应用配置(K8s、Compose、CI、Spring 等常用写法)都在支持范围内;含锚点的文档可先用其他工具展开锚点后再粘贴转换。# 只在它前面是空白时才生效;生成 YAML 时,凡是包含 : 、#、首尾空格或看起来像数字/布尔/null 的字符串都会自动加上双引号,多行字符串建议在源 YAML 中用 | 块写法表达。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!