JSON 转 YAML JavaScript Object Notation ↔ YAML Ain't Markup Language 免费 在线 安全
放进一个 JSON 文件,带走 YAML。读和写都在这里、在你的浏览器里完成,文件不离开你的设备——这趟转换保住了什么、保不住什么,下面都写着,不用你自己去发现。
转换你的文件
把 JSON 文件拖到这里,或者选一个。
你的文件不会离开这台设备。一切都在你的浏览器里完成。
不上传任何文件
从 JSON 转换
转换为 JSON
这些格式从哪里来
CSV 最古老,也最缺乏规范:把一张表写成一行行文字,自1970年代起就在用,直到2005年才被形诸文字;那时每个程序早已各自认定了分隔符是什么、引号何时该加。XML 于1998年自 SGML 长出,供那些必须携带严格结构、并要照着模式检验的文档使用。JSON 是道格拉斯·克罗克福德约在2001年从 JavaScript 里抽出来的,刻意削减到只剩对象、数组、数字和字符串——正是这份简省让它拿下了整个网络。YAML 是它可读的表亲,缩进在那里做着别处由括号来做的事。彼此转换时只有一件事要紧:CSV 是平的,是行与列的网格;而 JSON、XML、YAML 都是树。
你会在哪里遇到它们
CSV 是电子表格导出的东西,也是会计、网店平台或银行对账单递到你手上的东西。JSON 是网络服务彼此交谈所用,配置文件也越来越用它来写。XML 存活在较旧的企业系统里、发票规范里,以及办公格式自身的内部。YAML 是人们用手写设置的地方。在它们之间转换,就是每天把数据从它诞生的地方搬到它被需要的地方。
常见问题
我的 CSV 在 Excel 里打开成了一列。为什么?
因为你的电子表格等的是另一种分隔符。Excel 依照计算机区域设置里的列表分隔符;凡是逗号已经充当小数点的地方,那个分隔符就是分号——也就是欧洲大陆的大部分地区。此时一个以逗号分隔的文件看上去就是一列文字。请用导入对话框并明确指定分隔符,而不要双击打开文件。3.5 有时变成一个日期,也出于同一个区域设置。
为什么我层层嵌套的 JSON 变不成一张整齐的表格?
因为表格是平的,而 JSON 是一棵树。一行每列只放得下一个值;一个 JSON 对象却能在某个字段里的列表里再套一个列表。转换意味着要选择如何把它拍平:要么把嵌套的名字接成一个很长的列标题,要么把父行按子项的个数重复若干次。两者都是让步,而且都无法自动还原——所以从表格回到原来的形状,通常需要一个人来做决定。
文件会损失质量吗?
要看两种格式各自装得下什么。在存放同样内容的格式之间转换——PNG 转 BMP,WAV 转 FLAC——不会损失任何东西。转成为省空间而丢弃信息的格式,比如 JPEG 或 MP3,每转一次就损失一点,再转回去也拿不回来。凡是有选择余地的地方,本页倾向于保住原来的质量,而不是做出最小的文件。
我的文件会被上传到什么地方吗?
不会。转换发生在你自己的机器上、你的浏览器里面;文件从不离开它,这里也没有任何服务器能够接收它。正因如此,限制一个大文件的是你自己的内存而不是上传;也正因如此,你转换的任何东西都不可能出现在任何人的日志里——包括我们的。不过,音频和视频工具会在你第一次使用时从本站取来它们的转换引擎——约三十兆字节,仅此一次;此后工作依然完全在你自己的机器上进行。
人们为什么把 JSON 转换成 YAML
JSON 是程序喜爱的记法:严格、紧凑,每种语言都能理解。但它对人并不友善。一个很长的 JSON 文件是一丛花括号、方括号、引号和逗号,容不下一条注释,而一个多余的结尾逗号就能让一切崩溃。YAML 是人们在必须手工阅读和编辑数据时选择的记法。它用缩进代替花括号,允许注释,读起来几乎像一份提纲,因此成为配置的首选:构建流水线、容器定义、部署文件、静态网站和文档工具的设置。当数据以 JSON 到来,而您想以一种读起来舒服的形式处理它时,就需要转换。这就是人们把 JSON 转换成 YAML 的原因。
这些情形都是日常的。一位拿到工具的 JSON 输出并想把它变成配置文件的开发者。一个正把设置从一个系统迁移到另一个系统并偏好可读格式的团队。一位想读懂 API 应答的结构而不被杂乱干扰的作者。一位想看花括号如何对应缩进的学生。在每种情形下,数据是同样的,只是记法在变。
本页在您的浏览器中把 JSON 转换成 YAML。您的文件在这里被读取和写出,所以它绝不离开您的设备,这对配置文件很重要,因为它们常包含地址、内部系统的名称,有时还有机密。而且本页会事先告诉您这一跨越会保留什么、不能保留什么,而不是让您自己去发现。下面您会看到转换如何进行、深层嵌套和长字符串会怎样,以及如何得到整洁的结果。
转换如何进行
两种记法中相同的形状
您的 JSON 在您的浏览器内被读取,其结构被写出为 YAML。二者持有相同的形状,而且双向都保留一切:映射、列表、字符串、数字、布尔值和 null。JSON 中的对象成为 YAML 中的映射,数组成为序列,标量值保持它们的类型。键 port 配数字 8080 给出 port: 8080,键 enabled 配 true 给出 enabled: true。
重复的结构被完整写出
YAML 有避免重复的办法,即锚点和别名。转换器不使用它。重复的结构被完整写出,而不是写成锚点,所以文件可以一路读到底。这使 YAML 稍长一点,但其中没有任何东西需要到别处去查,任何读者都能独立理解每一块。
键保持它们的顺序
键保持 JSON 中的顺序。YAML 的阅读次序与源文件相同,所以了解该 JSON 的人会立刻找到方向。
保留什么
所有属于数据的东西
双向都保留一切:映射、列表、字符串、数字、布尔值和 null。如果它在您的 JSON 中是一个值,它在 YAML 中就是一个值,并且类型相同。
需要保护的字符串
一些字符串如果裸写在 YAML 中会被误读:单词 true、加引号的数字、含冒号的文本。转换器会给这样的字符串加引号,使它们回来时仍是字符串,不会变成布尔值或数字。JSON 里写着“true”的字符串,在 YAML 中仍是字符串。
Unicode
带重音的字母、符号和来自其他字母表的字符原样保留,所以多语言的文件仍然可读。
把 JSON 转换成 YAML 之前您应该知道的
深层嵌套意味着深层缩进
YAML 把意义放在缩进里,所以最终嵌套很深的值会变成缩进很深的文件:可读,但不短。八层的 JSON 树会给出离左边距很远才开始的行。如果这变得难以驾驭,请考虑在源头压平结构。
长字符串会被折行
长字符串在约一百列处折行,这改变了换行的位置,而不改变值。在 JSON 中是单独一长行的段落,在 YAML 中显示为几行,但文本是相同的。读取 YAML 的程序收到的是原始字符串。
注释无法凭空产生
YAML 允许注释,但 JSON 不带任何注释,所以结果也没有。之后您可以手动添加说明,这正是一开始就想要 YAML 文件的主要原因之一。
如何在这里把 JSON 转换成 YAML
添加您的文件
把 JSON 文件拖到页面上,或从您的设备中选取。它在您的浏览器内被读取,不会上传。
转换
按下按钮。普通大小的文件只需片刻。请保持页面打开,直到完成。
下载并检查
下载 YAML,用文本编辑器打开。看看开头和结尾,检查结构和类型是否符合预期。
进一步了解 JSON 和 YAML
同一数据的两种记法
JSON 被设计成便于程序读写。YAML 被设计成便于人使用。它们重叠到这种程度:JSON 几乎是 YAML 的子集,YAML 读取器通常可以读取 JSON。因此把 JSON 转换成 YAML 不是改变数据,而是给它换件衣服,换成一种容得下备注、没有标点杂乱的形式。
为什么缩进需要小心
因为 YAML 依赖缩进,错位的一行会改变含义。转换器一致地书写缩进,使用空格,每一层宽度相同,所以文件在生成时就是正确的。当您以后编辑它时,请保持同样的宽度,并避免使用制表符,YAML 不允许用它来缩进。
可读,但不总是更短
YAML 常被描述为比 JSON 更紧凑,因为它去掉了花括号和键两边的引号。对扁平的数据来说确实如此。对深层嵌套的数据,缩进可能使它在字符数上更长。收益在可读性,而不在大小。
常见情形详解
把工具输出变成配置
工具常把它们的设置或结果以 JSON 打印出来。把 JSON 转换成 YAML,添加注释,并把它作为人们维护的配置文件保存。
在系统之间迁移设置
把配置从使用 JSON 的系统迁移到使用 YAML 的系统,只需一次转换,再核对目标是否接受这些键。
阅读 API 应答
API 的应答可能多达几百行花括号。在 YAML 中,同样的数据读起来像一份提纲,您一眼就能看出结构。
教学与文档
用两种记法展示同样的数据,是教授结构化数据如何运作的好办法。使用 YAML 示例的文档往往更易读。
把 JSON 转换成 YAML 之前的实用建议
检查 JSON 是否有效
多余的逗号或缺少的引号会使转换停止。如果页面报错,请在能高亮显示 JSON 问题的编辑器中打开文件,并修复它指出的那一行。
能压平就压平
如果结构比需要的更深,请先简化它。更扁平的结构产生更易读易改的 YAML。
想一想使用者
看看谁将读取这份 YAML。一些工具期望特定的键名和类型,事先调整 JSON 比事后编辑 YAML 更容易。
大文件
一切都在您的设备上运行,所以非常大的文件需要内存。对于数兆字节的文件,请使用电脑,如果页面吃力,就把数据拆分。
转换前人们常问的问题
我的数据会被改变吗?
不会。双向都保留一切:映射、列表、字符串、数字、布尔值和 null。
为什么我的长字符串被拆成几行?
长字符串在约一百列处折行。这改变了换行的位置,而不改变值。
为什么我的文件缩进这么多?
因为数据嵌套很深,而 YAML 用缩进表达嵌套。
锚点在哪里?
重复的结构被完整写出,而不是写成锚点,所以文件可以一路读到底。
我的文件会被上传吗?
不会。转换在您的浏览器中运行,文件绝不离开您的设备。
我能转回 JSON 吗?
可以。YAML 转 JSON把文件读回来,不过您添加的任何注释都不会保留。
把 JSON 转换成 YAML 时的明智选择
真的需要 YAML 吗?
如果接收的工具读取 JSON,就保留 JSON。只有在人们必须阅读和编辑文件,或工具要求 YAML 时才转换。
其他目标
如果目的地是标记文件,可以接着用JSON 转 XML。对于表格,JSON 转 CSV和JSON 转 XLSX服务于电子表格。
保留 JSON
如果 JSON 来自程序,它就是原件。请保留它,并在它变化时重新生成 YAML。
转换后获得好结果
添加注释
结果里一条也没有,而这正是 YAML 大放异彩之处。在每一块上方加一条简短的说明,讲明它的作用和允许的取值。
检查类型
看看版本号、代码和标志这样的值。确保应当是字符串的地方是字符串,应当是数字的地方是数字。
保持缩进一致
编辑时使用空格,并在每一层保持同样的宽度。能显示空白并检查 YAML 的编辑器会使您免于出错。
准备好 JSON 以便顺利转换
保持规整
当您把 JSON 转换成 YAML 时,规整的数据转换得最好:键一致、类型清晰。不规整的数据会产生正确但不整洁的结果。
给键清晰地命名
人们将阅读这份 YAML,所以选择能说明含义的键。当名称平白易懂时,配置更容易维护。
先在一小块上测试
如果您的文件很大,请取一部分放进测试文件并转换它。快速看一眼结果,就能知道结构是否符合预期。
把 JSON 转换成 YAML 之后使用 YAML
添加 JSON 容纳不了的备注
对刚转换的文件要做的第一件事,是从头读起,并在陌生人会困惑的地方添加注释。在一个部分上方加一行简短说明它控制什么,胜过别处保存的整页文档,因为它就在所描述之物的旁边。这是您把 JSON 转换成 YAML 时获得的主要好处。
把相关的设置分组
键保持它们在 JSON 中的顺序,这可能是程序碰巧输出它们的顺序。在 YAML 中,您可以自由重排,使相关的设置放在一起,组与组之间留一个空行。因为映射中键的顺序对大多数读取器没有意义,这是安全的,但请检查您使用的工具是否在意。
检查接收的工具期望什么
有效的 YAML 文件不一定是有效的配置。工具期望特定的键和类型,有些对未知的键很严格。转换之后,请把文件与工具的文档比较,如果它有自己的检查器,就运行它。
使用版本控制
YAML 的配置容易逐行比较,这使它非常适合版本控制。提交转换后的文件,让同事把每次改动看作清晰的差异,而对一行压缩的 JSON 来说这要难得多。
留意机密
从工具导出的 JSON 有时包含令牌和密码。因为转换在您的浏览器中进行,没有东西离开您的设备,但 YAML 文件会包含同样的机密。在提交或分享文件之前,请移除它们,或把它们移到更安全的地方。
编辑时留意缩进
一旦您开始手工编辑,主要的风险是某一行偏了一个空格。请使用能显示空白并在您输入时检查 YAML 的编辑器,并像转换器那样在每一层保持同样的宽度。
源头变化时再次转换
如果 JSON 由程序生成且不时变化,请对每个新版本再次把 JSON 转换成 YAML,并把旧文件中的注释合并到新文件中。比较工具使这只需几分钟。
隐私与处理
为什么本地转换对配置很重要
配置文件常包含地址、内部系统的名称,有时还有密钥和密码。许多在线转换器会把您的文件上传到服务器,处理后返回结果,而一段时间里有一份副本留在您无法控制的机器上。在这里,是您自己的浏览器在工作,所以文件留在您的设备上。
离开时会怎样
当您关闭页面,转换后的文件会从浏览器中消失,所以请先下载。关于您的文件,什么都不会保留。
如果出了问题
页面说文件不是有效的 JSON
可能有多余的逗号、缺少的引号或没有闭合的括号。请在能高亮显示 JSON 错误的编辑器中打开文件,并修复它指出的那一行。
工具拒绝了 YAML
检查它期望的键名和类型。YAML 是有效的,但工具可能想要不同的名称或不同的结构。
页面在处理大文件时卡住
一切都在您的设备上运行,大文件需要内存。请在电脑上再试一次,或拆分数据。
相关工具
同一系列的工具涵盖相邻的工作。要转回去,请用YAML 转 JSON。对于标记语言,JSON 转 XML和XML 转 JSON在这两者之间转换。对于表格,有JSON 转 CSV、CSV 转 JSON、JSON 转 XLSX和XLSX 转 JSON。
一个实际例子
假设某个工具把它的设置打印成 150 行的 JSON 文件,而您想把它们作为同事可以阅读和评论的配置保存在您的代码仓库里。您把文件拖到这里并按下按钮。片刻之后,您下载一份约 90 行的 YAML,其中结构读起来像一份提纲。您在每个部分上方加一条注释,提交它,并告诉团队在哪里编辑。JSON 仍作为工具的输出保留。
简短的清单
转换前
检查 JSON 是否有效。如果可以,简化深层嵌套。保留 JSON。
转换中
停留在页面上,直到文件准备好。
转换后
打开 YAML,检查结构和类型,添加注释,并用将读取它的工具测试。
常见错误
期望得到更短的文件
深层嵌套产生深层缩进。YAML 更易读,但不总是更小。
用制表符编辑
YAML 不允许用制表符缩进。请使用空格。
丢失源头
如果 JSON 来自程序,请保留它,并在它变化时重新生成 YAML。
您的文件留在您的设备上
转换在本地进行。您的文件由您自己的浏览器读取,在那里重写,并作为 YAML 交还给您。什么都不会上传,所以没有副本落在服务器上,别人也读不到它。对于有私密内容的配置,这是把 JSON 转换成 YAML 的安全方式。
小结
要在这里把 JSON 转换成 YAML,请拖入文件并按下按钮。它在您的浏览器中被读取和写出,所以文件绝不离开您的设备。双向都保留一切:映射、列表、字符串、数字、布尔值和 null。重复的结构被完整写出,而不是写成锚点,所以文件可以一路读到底。YAML 把意义放在缩进里,所以最终嵌套很深的值会变成缩进很深的文件,可读,但不短。长字符串在约一百列处折行,这改变了换行的位置,而不改变值。键保持 JSON 中的顺序。