JSON 转 XML JavaScript Object Notation ↔ Extensible Markup Language 免费 在线 安全
放进一个 JSON 文件,带走 XML。读和写都在这里、在你的浏览器里完成,文件不离开你的设备——这趟转换保住了什么、保不住什么,下面都写着,不用你自己去发现。
转换你的文件
把 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 转换成 XML
JSON 是现代网络代码的语言:轻巧、易读,每种编程语言都能理解。XML 是更古老也更正式的兄弟,用开合的标签书写,在出人意料多的地方仍是必需的格式。会计程序、税务和海关系统、公共采购平台、产品数据源、出版工作流、企业软件以及一长串较旧的网络服务,全都期望 XML。当您的数据是 JSON,而必须接收它的系统讲的是 XML 时,就需要转换。这就是人们把 JSON 转换成 XML 的原因:他们手里的信息是一种形式,而目的地要求另一种。
这些情形很常见。一位必须把数据从现代应用发送给多年前建成的服务的开发者。一家把产品导出为 JSON、却必须把数据源交给要求 XML 的市场平台的商店。一个需要某个工具偏好的标记形式的配置的团队。一位想看同样的数据在两种记法下是什么样子的学生。在每种情形下,内容已准备好,只是记法不同。
本页在您的浏览器中把 JSON 转换成 XML。您的文件在这里被读取和写出,所以它绝不离开您的设备,这对订单、发票和其他任何私密内容都很重要。而且本页会事先告诉您这一跨越会保留什么、不能保留什么,而不是让您自己去发现。下面您会看到转换如何进行、名称、列表和属性如何处理,以及对于 XML 无法接受的键该怎么办。
转换如何进行
整棵树被带过去
您的 JSON 文件在您的浏览器内被读取,整棵树被写出为 XML。对象成为元素,它们的键成为子元素的名称,值成为其中的文本。JSON 中的嵌套就是 XML 中的嵌套,所以您在花括号里看到的形状,就是您在标签里得到的形状。
文档以唯一的键命名
XML 文档恰好需要一个根元素。如果您的 JSON 对象只有一个键,那个键就为文档命名。这是方便的情形:一个转成 JSON 再转回来的 XML 文件看上去和原来一样,因为根元素成为唯一的键,又作为根元素返回。如果您的 JSON 在顶层有几个键,转换器会把它们包进一个根元素,使结果格式良好。
列表重复元素
数组会重复它的元素。装着三条记录列表的键 products 会依次给出三个 product 元素,这就是 XML 表达列表的方式。顺序得以保留。
保留什么
整棵树
每个对象、每个列表和每个值都被带过去。什么都不会丢弃,嵌套就是原件的嵌套。
属性,通过 @
以 @ 开头的键成为属性。带有键 @id 和键 name 的记录,给出一个带属性 id 和子元素 name 的元素。这与相反方向的转换所用的约定相同,所以转成 JSON 再转回来的 XML 会保留它的属性。
顺序
键保持它们在 JSON 中出现的顺序,所以 XML 中的元素遵循源文件的次序。
把 JSON 转换成 XML 之前您应该知道的
任何 JSON 键都可以是一个词;XML 名称却不行
任何 JSON 键都可以是一个词、一个数字或带空格的短语。XML 元素名称不行:它必须以字母或下划线开头,可以包含字母、数字、连字符、下划线和点,但不能有空格。不是合法名称的键不会被硬改成合法名称。它会成为一个带 name 属性的 item 元素,写成 item name="原始键",因此原文仍在文件中,仍然可以找到。没有任何东西被悄悄改名。
没有命名空间,没有模式
没有任何东西带命名空间,也没有任何东西被赋予模式。结果是格式良好的,而不是经过验证的。任何 XML 读取器都能读取它,但它是否满足税务系统或市场平台所要求的特定结构,是另一个问题,只有接收方才能回答。如果某个模式要求特定的元素名,您需要事先让 JSON 的键与之匹配。
值是文本
XML 没有类型:标签里的每个值都是文本。数字、true、false 和 null 都以其文本写出。读取 XML 的程序必须按自己的方式解释它们。
如何在这里把 JSON 转换成 XML
添加您的文件
把 JSON 文件拖到页面上,或从您的设备中选取。它在您的浏览器内被读取,不会上传。
转换
按下按钮。普通大小的文件只需片刻。请保持页面打开,直到完成。
下载并检查
下载 XML,用文本编辑器或浏览器打开。看看开头和结尾,检查元素名称是否符合预期,以及属性是否出现在您想要的地方。
进一步了解 JSON 和 XML
书写一棵树的两种方式
JSON 和 XML 都描述值的一棵树。JSON 用花括号和方括号书写,只认识对象、列表、字符串、数字、布尔值和 null。XML 用开合的标签书写,并增加了属性、命名空间和混合内容。它们对数据(如记录和设置)重叠得很好,对文档(文本与标记交织)则重叠得不好。
为什么约定很重要
JSON 没有属性、没有根元素,也没有重复元素的概念。所以任何转换都需要约定:用 @ 表示属性,用单个键表示根,用元素的重复表示列表。这里使用的约定简单而一致,并且与从 XML 到 JSON 时所用的一致,这使往返在常见情形下能够成立。
空值
空字符串和 null 最终都变成空元素。如果这种区别对接收系统很重要,请在把 JSON 转换成 XML 之前在数据中标明,例如用一个单独的标志。
常见情形详解
市场平台和比价网站的数据源
许多平台要求 XML 格式的产品数据源。如果您的商店软件导出 JSON,请把 JSON 转换成 XML,对照平台的规范检查元素名称,然后上传。
较旧的服务和企业系统
建于 SOAP 和早期 API 时代的系统期望 XML。现代应用可以生成 JSON,并为它们转换。
偏好 XML 的工具的配置
一些构建工具、内容系统和桌面程序从 XML 读取设置。写成 JSON 的配置可以转成它们需要的形式。
学习与比较
看到同样的数据用两种记法呈现,是理解它们差异的好办法。粘贴一小段 JSON,转换它,并把两者并排比较。
把 JSON 转换成 XML 之前的实用建议
检查 JSON 是否有效
多余的逗号或缺少的引号会使转换停止。如果页面报错,请在能高亮显示 JSON 问题的编辑器中打开文件,并修复它指出的那一行。
让键成为合法的元素名
如果您知道 XML 将依据某个模式检查,请使用有效名称且与模式匹配的键。否则转换器会把它们作为 item 元素安全保存,这是正确的,但可能不是接收方所期望的。
选择唯一的顶层键
如果您想让 XML 的根元素有特定的名称,请在把 JSON 转换成 XML 之前,把您的数据包进带有那个唯一键的对象中。
大文件
一切都在您的设备上运行,所以非常大的文件需要内存。对于数兆字节的文件,请使用电脑,如果页面吃力,就把数据拆分。
转换前人们常问的问题
什么为根元素命名?
只有一个键的对象会以那个键为文档命名。
我怎样得到属性?
让键以 @ 开头。它就成为该元素的属性。
带空格的键会怎样?
它不是合法的元素名称,所以它成为带 name 属性的 item 元素,name 属性保存着原始的键。什么都不会丢失。
XML 能通过模式检查吗?
结果是格式良好的,而不是经过验证的。它是否符合某个给定的模式,取决于您的元素名称和结构。
我的文件会被上传吗?
不会。转换在您的浏览器中运行,文件绝不离开您的设备。
我能转回 JSON 吗?
可以。XML 转 JSON用同样的属性约定把 XML 树读回来。
把 JSON 转换成 XML 时的明智选择
真的需要 XML 吗?
如果接收系统接受 JSON,就用 JSON。只有在需要 XML 时才转换。
其他目标
对于人们编辑的配置,JSON 转 YAML读起来更舒服。对于表格,JSON 转 CSV和JSON 转 XLSX服务于电子表格。
保留 JSON
JSON 是原件。它保存着类型。请保留它,并把 XML 当作为特定接收方制作的副本。
转换后获得好结果
在浏览器中打开
浏览器把 XML 显示为可折叠的树。打开文件并展开各元素。如果结构看上去符合您的预期,它就是可靠的。
拿几条记录与源文件比较
取中间的几条记录,与 JSON 核对。这只需一分钟,并告诉您转换是忠实的。
添加接收方需要的东西
如果接收方要求声明行、命名空间或样式表引用,请在文本编辑器中添加。它们不属于数据,也不会替您写入。
准备好 JSON 以便顺利转换
使用规整的结构
当您把 JSON 转换成 XML 时,规整的数据转换得最好:共享相同键的记录列表,每个键都是合法的名称。不规整的数据会产生正确但不整洁的结果。
决定什么是属性
标识符、代码和标志在 XML 中常是属性。在 JSON 中用 @ 标明它们,结果就会像人写出来的 XML。
先在一小块上测试
如果您的文件很大,请把最前面的几条记录放进测试文件并转换它。快速看一眼结果,就能知道形态是否符合预期。
让 XML 适合它的接收方
先看规范
在为市场平台、税务门户或合作伙伴把 JSON 转换成 XML 之前,先读他们的要求。大多数会公布他们期望的元素、顺序以及哪些是必需的描述。让您的键名与之对齐,在 JSON 中只花几分钟,却能省去之后上传失败的麻烦。
顺序可能很重要
一些 XML 模式要求元素按固定顺序出现。转换器保持您的键的顺序,所以如果接收方坚持某个次序,请按那个次序写 JSON 的键。结果完全遵循您所写的。
如果需要,添加声明
顶部说明版本和编码的一行是惯例,一些接收方坚持要有。它不属于数据,所以不会替您写入。请在文本编辑器中手动添加,放在第一个元素之前。
留意特殊字符
值里的与号、尖括号和引号会以其转义形式写出,因此无论文本包含什么,XML 都保持有效。您无需在 JSON 中预先处理它们。
保留一份被接受的样本
一旦接收方接受了某个文件,请保留那个文件及生成它的 JSON 的副本。以后上传失败时,把它与成功的那份比较,立刻就能找到差别。
重新转换而不是手动编辑
当数据变化时,修改 JSON 并再次把 JSON 转换成 XML。手动编辑 XML 会留下两个渐行渐远的版本。
隐私与处理
为什么本地转换对数据很重要
数据文件常包含私密内容:客户、订单、发票、设置。许多在线转换器会把您的文件上传到服务器,处理后返回结果,而一段时间里有一份副本留在您无法控制的机器上。在这里,是您自己的浏览器在工作,所以数据留在您的设备上。
离开时会怎样
当您关闭页面,转换后的文件会从浏览器中消失,所以请先下载。关于您的数据,什么都不会保留。
如果出了问题
页面说文件不是有效的 JSON
可能有多余的逗号、缺少的引号或没有闭合的括号。请在能高亮显示 JSON 错误的编辑器中打开文件,并修复它指出的那一行。
接收方拒绝了 XML
结果是格式良好的,但没有经过验证。请把它与接收方的规范比较,并调整 JSON 的键名和结构。
页面在处理大文件时卡住
一切都在您的设备上运行,大文件需要内存。请在电脑上再试一次,或拆分数据。
相关工具
同一系列的工具涵盖相邻的工作。要转回去,请用XML 转 JSON。对于配置文件,JSON 转 YAML和YAML 转 JSON在这两者之间转换。对于表格,有JSON 转 CSV、CSV 转 JSON、JSON 转 XLSX和XLSX 转 JSON。
一个实际例子
假设您的商店软件把 300 个产品导出为 JSON,而一个市场平台要求根元素名为 catalogue 的 XML 数据源。您把列表包进只有唯一键 catalogue 的对象中,把文件拖到这里并按下按钮。片刻之后,您下载一个根为 catalogue、含有 300 个 product 元素的 XML,每个元素的 id 都是属性,因为您把键写成了 @id。您上传数据源,市场平台接受了它。JSON 作为源头留在您的文件夹里。
简短的清单
转换前
检查 JSON 是否有效。选择根名称。用 @ 标明属性。保留 JSON。
转换中
停留在页面上,直到文件准备好。
转换后
打开 XML,检查元素名称、属性和列表,并与接收方一起测试。
常见错误
以为结果是经过验证的
XML 是格式良好的,没有对照任何模式检查。请依据接收方的规则验证它。
使用带空格或符号的键
它们会成为带 name 属性的 item 元素。如果接收方期望合法名称,请使用合法名称。
删除 JSON
请保留它。它保存着 XML 无法保存的类型。
您的数据留在您的设备上
转换在本地进行。您的文件由您自己的浏览器读取,在那里重写,并作为 XML 交还给您。什么都不会上传,所以没有副本落在服务器上,别人也读不到它。对于有私密内容的数据,这是把 JSON 转换成 XML 的安全方式。
小结
要在这里把 JSON 转换成 XML,请拖入文件并按下按钮。它在您的浏览器中被读取和写出,所以文件绝不离开您的设备。整棵树都被保留。只有一个键的对象会以那个键为文档命名,所以转成 JSON 再转回来的 XML 文件看上去和原来一样;数组会重复它的元素;以 @ 开头的键成为属性。任何 JSON 键都可以是一个词;XML 元素名称却不行。不是合法名称的键不会被硬改成合法名称:它会成为一个带 name 属性的 item 元素,因此原文仍在文件中,仍然可以找到。没有任何东西带命名空间,也没有任何东西被赋予模式:结果是格式良好的,而不是经过验证的。