Conversión de YAML
YAML ↔ JSON · YAML a Properties · documentos múltiples, anclas y errores por fila y columna
.inf / .nan 因为 JSON 没有这两个值会变成 null。如果你要的是"把 YAML 存回去还跟原来一模一样",本页做不到,任何转换工具都做不到。
Entrada
粘贴 YAML选项切换方向后选项会跟着变
YAML 的锚点与别名在解析阶段就展开成真实值,所以这里没有「保留引用」开关——JSON 里也没有引用这个概念。为什么没有 noRefs 开关:js-yaml 的 noRefs 只对「含共享引用的 JS 对象」生效,而本页输入是文本(YAML 锚点已被展开、JSON 没有引用语义),开关不会产生任何可观察差异,故不提供。
行宽只影响长字符串的换行方式:超过行宽时 js-yaml 会用折叠块(>-)折行。语义不变,但看起来会和你手写的 YAML 不一样。
嵌套对象用点连接(spring.datasource.url)。只有一份文档能转:多文档(---)没有对应的键值形式,会明确报错。空对象与空数组在 .properties 里无法表示,会被跳过并在结果里计数。
Resultado
类型边界:YAML 会把这些写成什么
本页按 YAML 1.2 的 core schema 解析(js-yaml 4.x 默认行为)。下面每一条都是本页实测结果,不是"按印象写的":
| YAML 写法 | 解析成 | 转成 JSON |
|---|---|---|
| true / false / True / TRUE | 布尔 | true / false |
| yes / no / on / off / YES | 字符串 | "yes" 等——YAML 1.2 里这些不是布尔(1.1 才是) |
| 007 | 数字 7 | 7(不是八进制;八进制要写 0o17) |
| 0x1F | 数字 31 | 31 |
| 1e3 | 数字 1000 | 1000 |
| 00123 这类要保留前导零的编号 | 数字 123 | 123——要保号请写成 "00123"(带引号) |
| 2024-01-02 / 2024-01-02 03:04:05 | 时间戳(Date) | "2024-01-02T00:00:00.000Z"(ISO 字符串) |
| ~ / null / 空值 | null | null |
| .inf / -.inf / .nan | ±Infinity / NaN | null——JSON 没有这两个值,信息会丢 |
| 123456789012345678901234567890 | 双精度近似值 | 1.2345678901234568e+29——长 ID 请写成字符串 |
| "007"(带引号) | 字符串 "007" | "007" |
| 块标量 | | 保留换行的字符串 | 带 \n 的字符串 |
| 块标量 > | 换行折叠成空格 | 单行字符串 |
Preguntas frecuentes
Desaparecen o se expanden. Los comentarios de YAML son para humanos; JSON no tiene concepto de comentario, así que se pierden siempre - una de las razones para escribir la config en YAML y transportar datos en JSON. Las anclas y alias (&x / *x) se expanden a su valor real al analizar, y cada referencia queda una copia independiente: datos equivalentes, más tamaño, y la relación de reutilización desaparece. Los documentos múltiples (separados por ---) salen en orden como un array JSON - un documento por elemento.
Porque esta página usa el esquema core de YAML 1.2 (lo que js-yaml 4.x trae por defecto): solo true / false (y True / False / TRUE / FALSE) son booleanos; yes / no / on / off, costumbre de YAML 1.1, aquí son simples cadenas. Igual 007 se parsea como el número 7 (no octal), 0x1F como 31, y una fecha tipo 2024-01-02 se reconoce como marca de tiempo y sale cadena ISO en JSON. .inf y .nan son números YAML válidos pero JSON no tiene esos valores: pasan a null. Todos estos límites de tipo están escritos uno a uno en la tabla de arriba.
Con rutas de clave planas: los objetos anidados se unen con puntos (spring.datasource.url), los arrays usan índices entre corchetes por defecto (list[0], list[1]; objetos dentro del array siguen con puntos, users[0].name), con opción de índices de punto (list.0). Barras invertidas, saltos, tabuladores y espacios iniciales en los valores se escapan según java.util.Properties; el chino se queda tal cual por defecto (bien con Java 8+ en UTF-8), con un conmutador «chino a escapes \uXXXX» para herramientas viejas. Objetos y arrays vacíos no tienen representación en .properties: se saltan y se cuentan en el resumen.
Nada se sube. Analizar, convertir y generar ocurren en tu navegador: la configuración no sale de tu máquina, recargar la borra y la página no lanza petición alguna (el propio js-yaml está autoalojado, sin CDN). La dirección inversa, Properties a YAML, no se ofrece a propósito: convertir rutas de clave en anidamiento obliga a adivinar qué puntos son jerarquía y qué puntos son parte del nombre (¿a.b.c son tres niveles o una clave que se llama literalmente a.b.c?), y un fallo adivina cambia en silencio el sentido de tu config. Hazlo a mano o deja que un framework como Spring Boot lo enlace.