企评社

Las etiquetas de la interfaz están en Español. Las reseñas de empresas, los mensajes del foro y las descripciones de las herramientas solo están disponibles en chino por ahora.

Conversión de YAML

YAML ↔ JSON · YAML a Properties · documentos múltiples, anclas y errores por fila y columna

转换全部在你的浏览器里完成,配置内容不上传、不留存
转换不是无损的,先知道会丢什么。 YAML 的注释在 JSON / Properties 里没有任何对应位置,转换后一定丢失;锚点与别名(&x / *x)在解析阶段就展开成真实值,转换后每个引用点都是独立副本(数据等价,体积变大);缩进、引号风格、块标量(| 与 >)这些书写形式不会原样保留;YAML 里的日期会被识别成时间戳、转成 ISO 字符串,.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数字 77(不是八进制;八进制要写 0o17)
0x1F数字 3131
1e3数字 10001000
00123 这类要保留前导零的编号数字 123123——要保号请写成 "00123"(带引号)
2024-01-02 / 2024-01-02 03:04:05时间戳(Date)"2024-01-02T00:00:00.000Z"(ISO 字符串)
~ / null / 空值nullnull
.inf / -.inf / .nan±Infinity / NaNnull——JSON 没有这两个值,信息会丢
123456789012345678901234567890双精度近似值1.2345678901234568e+29——长 ID 请写成字符串
"007"(带引号)字符串 "007""007"
块标量 |保留换行的字符串带 \n 的字符串
块标量 >换行折叠成空格单行字符串

Preguntas frecuentes

¿Qué pasa con los comentarios y anclas al pasar de YAML a JSON?

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.

¿Por qué yes / no / on / off salen como texto y no como true / false?

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.

¿Cómo se vuelven claves los anidados y los arrays al pasar a .properties?

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.

¿Se sube mi configuración? ¿Podéis volver de Properties a YAML?

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.

Herramientas relacionadas