🔄 JSON与YAML格式互转工具

广告位 - 顶部 (728×90)

输入 JSON

输出 YAML

广告位 - 中部 (728×90)

JSON与YAML格式简介

什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但独立于语言。JSON格式被广泛应用于Web API响应、配置文件和数据存储。

什么是YAML?

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化标准,语法比JSON更加灵活和直观。YAML支持注释、多行字符串、锚点和别名引用等高级特性,使其成为配置文件的首选格式,广泛应用于Docker Compose、Kubernetes、Ansible、GitHub Actions等工具。

JSON vs YAML 对比

语法复杂度:JSON语法严格(必须双引号、不能注释),YAML语法灵活(支持多种字符串写法、可注释)

可读性:YAML缩进式结构对人类更友好,JSON适合机器处理

数据类型:YAML支持更多内置类型(日期、正则表达式、自定义标签)

文件体积:YAML通常比JSON更紧凑(去除不必要的引号和括号)

使用教程

本JSON与YAML互转工具操作简单,支持双向实时转换。以下是详细使用指南:

JSON转YAML:将JSON内容粘贴到左侧输入框,工具会自动检测格式并转换为YAML。转换后的YAML使用标准缩进(2空格),键名不加引号(除非包含特殊字符)。右侧结果区域会实时显示转换后的YAML内容。如果启用了「实时自动转换」选项,输入内容变化时会自动触发转换。

YAML转JSON:将YAML内容粘贴到左侧输入框,工具会尝试解析YAML并转换为JSON。转换后的JSON会经过格式化,键名使用双引号包裹,数组使用方括号。如果YAML包含注释,转换后的JSON会去除注释(因为JSON本身不支持注释)。

格式化与压缩:点击「格式化」按钮会对当前输入内容进行美化排版(JSON自动缩进,YAML自动对齐)。点击「压缩」按钮会去除所有不必要的空格和换行,生成最紧凑的输出。这对于减少网络传输体积非常有用。

下载功能:转换完成后,点击「下载」按钮可将结果保存为文件。JSON文件会自动添加.json扩展名,YAML文件添加.yaml.yml扩展名。

应用场景

JSON与YAML互转在开发运维工作中应用广泛,以下是几个典型场景:

Docker Compose配置转换:许多项目提供JSON格式的服务定义,需要转换为Docker Compose的YAML格式。使用本工具可以快速将JSON服务描述转换为标准的docker-compose.yml文件,包括服务名称、镜像、端口映射、环境变量、卷挂载等配置。

Kubernetes资源配置:K8s的Deployment、Service、ConfigMap等资源配置文件全部使用YAML格式。当从API获取JSON格式的资源状态后,需要转换回YAML进行版本控制或手动编辑。本工具可以帮助运维工程师快速完成这类格式转换。

CI/CD流水线配置:GitHub Actions、GitLab CI、Jenkins Pipeline等工具的配置文件格式各异。GitHub Actions使用YAML,而某些工具导出JSON格式。使用本工具可以在不同CI系统间迁移配置时快速转换格式,减少手动调整的出错概率。

API文档与Mock数据:RESTful API通常返回JSON数据,但OpenAPI/Swagger文档使用YAML格式编写。在维护API文档时,经常需要将JSON示例转换为YAML嵌入文档。本工具可以一键完成转换,并保持格式一致。

扩展知识

YAML高级特性:YAML 1.2规范支持多种高级特性,包括锚点(&anchor)和别名(*alias)用于重复引用、合并键(<<)用于继承、多行字符串(|保留换行,>折叠换行)、标签(!type)用于类型转换等。本工具支持基本YAML特性,复杂锚点和标签在转换为JSON时会展开为普通结构。

JSON Schema与YAML:JSON Schema是描述JSON数据结构的规范,同样适用于YAML。许多配置验证工具(如VS Code的YAML扩展)使用JSON Schema来提供智能提示和验证。理解JSON和YAML的对应关系,有助于更好地编写和维护Schema定义。

相关工具推荐:除了本工具,开发者还常用JSON格式化工具进行JSON美化与验证,JSON校验器检查JSON语法正确性,以及CSV转JSON工具进行表格数据转换。组合使用这些工具可以大幅提升数据处理的效率。

常见问题

JSON和YAML有什么区别?

JSON是严格的数据交换格式,语法简洁但不够灵活;YAML是超集,支持注释、多行字符串、锚点引用等高级特性,更适合人类阅读和编写配置文件。

转换后的YAML能直接用在Docker Compose里吗?

可以。本工具生成的YAML符合YAML 1.2规范,可直接用于Docker Compose、Kubernetes、Ansible Playbook等场景。

支持YAML注释吗?

JSON本身不支持注释,转换为YAML时不会保留注释。如需添加注释,请在转换后的YAML中手动添加。YAML转JSON时,注释会被自动去除。

数据会上传到服务器吗?

不会。所有转换操作均在浏览器本地完成,数据不会离开你的设备,绝对安全。

能处理多大的文件?

建议处理不超过10MB的文件。过大的文件可能导致浏览器卡顿,建议分批处理或使用命令行工具(如yqjq)。

YAML中的锚点和别名会保留吗?

YAML转JSON时,锚点和别名会被解析为对应的值,JSON不支持引用语法,因此会展开为普通结构。JSON转YAML时不会生成锚点和别名。

为什么有些YAML字符串加了引号,有些没有?

YAML根据内容自动判断是否需要引号。包含冒号、井号、花括号等特殊字符的键值会自动加引号;纯字母数字的字符串不需要引号。你可以在选项中强制为所有键名加引号。

转换出现错误怎么办?

请检查输入内容的语法是否正确。JSON必须使用双引号包裹键名和字符串值,数组和对象不能尾随逗号。YAML缩进必须使用空格(不能用Tab),且同一层级的缩进量必须一致。错误信息会显示在输入框下方的红色提示区域。

广告位 - 底部 (728×90)