使用方法
- 把 XML 粘贴到 XML 中。系统会先检查它,如有问题,会显示问题所在的行和列。
- 保持 把数字、true 和 false 读取为值 处于勾选状态,可使12.5成为数字;取消勾选,则把所有内容保留为文本。
- 选择 缩进,或选择 不换行(压缩),以得到最短的 JSON。
- 复制 JSON,或下载为 converted.json。
对应规则,逐条说明
根元素成为 JSON 对象中唯一的成员,因此名为 catalog 的根元素会得到一个 catalog 成员。属性变为名称以 @ 开头的成员,例如 @id。元素没有其他内容时,它的文本即为其值;如果它还含有子元素,文本则变为成员 #text,并去掉前后的空白。
子元素变为以其名称为键的成员。同一名称出现多次时,这些成员按文档顺序组成数组。没有属性也没有子元素的元素,若写成自闭合形式(标签末尾有斜线),其值为 null;若写成开始标签加结束标签,其值为空字符串。
- CDATA 段按原样计为文本,因此其中的 < 字符仍为 <。
- 注释和处理指令会被省略,因为 JSON 中没有它们的位置。
- & 和 A 这样的引用会被读取,因此文本中保存的是它们所代表的字符。
有类型的值及其影响
XML 本身没有数字或布尔值:XML 中的12.5只是文本。开启类型选项后,若某段文本经 JSON 的数字、true 或 false 写回后完全一致,它就会被读取为该值。12.50或007这类文本仍为文本,因为数字会把它们写成另一种形式。
只含一项的列表会返回该项本身,而不是数组,因为 XML 无法区分两者。如果 JSON 将由期望数组的程序读取,请记住这一点。
计算示例:默认目录
默认的 XML 是一个含有两本书的目录。第一本书有 id 属性,它的 title、price 和 inStock 元素变为键。第二本书没有 inStock 元素,它的空 price 元素变为 null。
JSON 只有一个成员 catalog,其 book 键是一个含有两个对象的数组。计数显示8个元素:目录、两本书以及它们的子元素。
常见问题
为什么我的数字显示为文本?
JSON 数字写回后无法完全一致的文本会保持为文本:12.50会保留末尾的零,007会保留前导零。关闭类型选项,即可把所有值都保留为文本。
为什么某个元素是对象而不是数组?
只有当同一名称在一个元素的子元素中出现两次或以上时,才会生成数组。单个元素会输出为它的值,这是 XML 的常见结果。
注释和处理指令会怎样?
它们会被省略。JSON 中没有注释的位置,所以转换工具只读取数据。如果注释对您很重要,请保留原始 XML。
为什么转换工具会报告行和列?
XML 必须格式正确,才能被读取。行和列显示文档第一次违反 XML 规则的位置,例如闭合标签与开始标签不匹配。
我的 XML 会被发送到服务器吗?
不会。转换在您的浏览器中进行,您粘贴的内容不会发送到我们的服务器,也不会在那里保存。
资料来源
- W3C(英文):Extensible Markup Language (XML) 1.0, Fifth Edition
- RFC 8259(英文):The JavaScript Object Notation (JSON) Data Interchange Format
数据和文字最近核对于2026年11月10日星期二。