Oh MyUtils

YAML格式化与验证器 - 在线格式化压缩YAML

使用语法高亮和树视图格式化、验证和压缩YAML配置文件。支持Kubernetes、Docker Compose、GitHub Actions — 100%浏览器处理,数据不离开您的设备。

缩进
键排序
Off
输入
输出
 

常见问题

什么是YAML格式化工具?

YAML格式化工具可以将YAML文件重新格式化为一致的缩进、间距和结构。YAML是一种人类可读的数据序列化语言,广泛用于Kubernetes、Docker Compose、GitHub Actions等DevOps工具的配置文件。格式化工具确保您的YAML文件遵循一致的样式规范,使其更易于阅读、维护和审查。

如何使用此YAML格式化工具?

使用选项卡选择操作:格式化、压缩或树视图。在输入区粘贴YAML内容,上传.yaml/.yml文件,或点击Sample加载示例。工具会自动实时验证和处理。在右侧面板查看输出结果,根据需要调整格式选项。点击Copy按钮复制到剪贴板,或使用Download保存为.yaml文件。

我的数据安全吗?

您的数据100%安全,永远不会离开您的浏览器。此YAML格式化工具使用完全在客户端JavaScript中运行的js-yaml库。不会向任何服务器传输数据。所有处理都在您的设备上本地完成。您可以断开网络验证——初始页面加载后完全离线工作。

什么是YAML压缩?

YAML压缩通过将块样式转换为流样式({key: value}形式)、删除所有注释和不必要的空白,将YAML压缩到最小表示。这在需要将YAML嵌入环境变量、CLI参数或数据库字段时非常有用。压缩后的输出与原始数据语义完全相同。

格式化时YAML注释会怎样?

YAML注释(#后的文本)在格式化时会丢失,因为js-yaml解析器在解析阶段会丢弃它们。这是大多数YAML解析器的常见限制。如果文件包含重要注释,请在格式化前保留备份。数据值本身始终准确保留。

为什么YAML解析可能失败?

常见原因包括:不正确的缩进(YAML要求一致的空格数)、混用制表符和空格(YAML只允许空格)、字符串值中未加引号的特殊字符、重复键、无效的多行字符串指示符,以及no、yes等值被解释为布尔值的「挪威问题」。错误消息会显示检测到问题的确切行和列。

YAML和JSON有什么区别?

YAML和JSON都表示结构化数据,但差异显著。JSON使用大括号{}表示对象、方括号[]表示数组,要求双引号键名。YAML使用缩进表示结构,大多数字符串不需要引号,支持注释(#)、多行字符串(|和>)、锚点/别名等功能。JSON适合API,YAML是配置文件的标准格式。

代码示例

// YAML formatting and validation using js-yaml
// Install: npm install js-yaml
const yaml = require('js-yaml');

// Validate YAML
function validateYaml(input) {
  try {
    yaml.load(input);
    return { valid: true };
  } catch (error) {
    return {
      valid: false,
      error: error.reason || error.message,
      line: error.mark ? error.mark.line + 1 : undefined,
      column: error.mark ? error.mark.column + 1 : undefined,
    };
  }
}

// Format/Beautify YAML
function formatYaml(input, options = {}) {
  const { indent = 2, sortKeys = false } = options;
  try {
    const parsed = yaml.load(input);
    const formatted = yaml.dump(parsed, {
      indent,
      sortKeys,
      lineWidth: -1,
      noRefs: true,
    });
    return { success: true, output: formatted };
  } catch (error) {
    return { success: false, error: error.message };
  }
}

// Minify YAML (convert to flow style)
function minifyYaml(input) {
  try {
    const parsed = yaml.load(input);
    const minified = yaml.dump(parsed, {
      flowLevel: 0,
      lineWidth: -1,
      noRefs: true,
    });
    return { success: true, output: minified };
  } catch (error) {
    return { success: false, error: error.message };
  }
}

// Example
const yamlStr = 'name: test\nvalue: 42\nitems:\n  - one\n  - two';
console.log('Valid:', validateYaml(yamlStr));
console.log('Formatted:', formatYaml(yamlStr));
console.log('Minified:', minifyYaml(yamlStr));

相关工具