用混合示例看出模型差别
默认示例可直接得到紧凑对象。混合示例会先显示错误;将输出模式切换为有序内容后,观察 content 中的文本与元素位置,再决定接收程序能否使用这种模型。
JSON 工具
默认示例包含属性、重复元素和命名空间;混合内容示例可用来比较两种输出模式。
XML 转 JSON 常用于把接口响应、配置或测试样本交给只接收对象与列表的程序。标签名无法说明 001 是数字还是编号,单个元素也未必意味着下游不要数组。
这里的 XML JSON 转换工具把这些约定放在明处:保留字符串、属性和限定名称,需要文本顺序时使用整份文档的有序模型。转换成功并不代表符合业务接口的结构要求。
XML 转 JSON 默认把相邻重复子元素组成数组。勾选单节点数组选项后,只有一个子元素也会进入数组,便于接收端维持统一类型;最外层根名称不额外包数组。
紧凑模式无法表达正文中夹着标签、或 a,b,a 交错出现的完整顺序,因此直接提示切换模式。有序输出把文本、元素、文本放在同一内容列表中,位置不会被归组打乱。
默认示例可直接得到紧凑对象。混合示例会先显示错误;将输出模式切换为有序内容后,观察 content 中的文本与元素位置,再决定接收程序能否使用这种模型。
叶节点文本不会被 trim。默认仅忽略纯元素内容之间的格式空白,xml:space="preserve" 会继承并优先保留空白;保留全部空白时,紧凑模式可能需要改成有序模式。
自动转换等待 350 毫秒。关闭开关后可集中修改,再按转换或 Ctrl/Cmd+Enter。输入和选项一变就禁用复制与下载,必须等当前结果重新成功才能导出。
XML 属性转 JSON 时使用 @id 这样的键;带属性的叶节点把正文放在 #text。p:item 与 q:item 保持不同名称,xmlns 声明原样作为属性保留,有序元素另有 namespaceURI。
有序模式的 content 数组区分元素、文本、CDATA、注释和处理指令,并保留它们在根前、根内、根后的顺序。XML 声明作为独立元数据记录,原始引号和字节编码不属于此模型。
001、12.00、true 和超大整数全部保留为字符串。紧凑模式下空元素是空字符串,带属性的空元素仍有空的 #text。不会因字段看起来像数字就改变编号、精度或前导零。
属性始终保留,紧凑模式在名称前加 @,例如 id 变成 @id。同名子元素仍使用 id,二者不会覆盖。有序模式把限定属性名和值放在 attributes 中。
XML 转 JSON 不依据样子推断类型。编号 001、金额 12.00 和 true 都可能是业务字符串;没有接收端 schema 就无法判断。输出后应由了解字段含义的程序做类型转换。
默认只有相邻重复的同名子元素成为数组。开启单节点数组选项后,所有子元素都使用数组;根名称保持原来的外层对象。a,b,a 这样的交错顺序在紧凑模式会被拒绝。
元素与属性都保留前缀,xmlns 声明也保留。有序节点另外显示解析后的 namespaceURI。不会将不同前缀或 URI 下的同名内容悄悄合并。
不可以,XML 文档必须有一个根元素。多个并列根会显示语法错误;需要由你确定一个业务上合适的外层容器。本工具不会自动补根或把多份文档拼在一起。
发现了意外结果?