跳转到主要内容
CuteJSON
↑↓ 导航 Enter 选择 Esc 关闭

如何将JSON转换为XML使用声明的映射

发布 1 分钟阅读 作者 Akash Kinkar Pandey

没有一种正确的方式将 JSON 转换为 XML。这两种格式以不同的方式建模 数据:XML 具有属性、混合内容和非原生数组类型,这些 JSON 都没有 等价物。本工具选择一种映射并在页面上声明它,而不是假装存在自然的 映射。

使用 JSON 到 XML 转换器

选择方向,写入 XML 时为根元素命名,因为 JSON 没有什么能像 XML 根 元素那样命名文档。转换

{"items":[{"name":"A & B <co>"},{"name":"C"}],"note":null}

将根设置为 catalog 产生:

<catalog>
  <items>
    <name>A &amp; B &lt;co&gt;</name>
  </items>
  <items>
    <name>C</name>
  </items>
  <note/>
</catalog>

对象成员变成子元素,数组变成重复的兄弟元素,共享数组的键作为其 名称,XML 文本中非法的字符(如 & 和 <)会被转义。

属性、文本和空值

以 @ 为前缀的键在写入时变成 XML 属性,#text 键变成位于子元素 旁边的文本。@ 和 # 都不是 XML 元素名称的合法起始字符,因此 普通 JSON 键永远不会意外地与任何约定冲突。

null、空对象、空数组和空字符串都变成空元素,因为 XML 只有一种 表示空的形式,无法区分它们。因此读回 <note/> 对所有四种情况 都返回 null,页面明确说明了这一点而不是让你自己发现。

为什么读取器将每个值作为字符串返回

XML 完全不记录类型信息。XML 文档中的数字就格式而言只是数字,猜测 它应该变成 JSON 数字正是那种将邮政编码变成缺少前导零的整数的 猜测。通过拒绝猜测,回读保持无损。

重复元素名称回读意味着什么

同一父元素下重复的元素名称在回读时变成 JSON 数组,而一个不是合法 XML 元素名称的成员名称会停止转换并命名有问题的键,而不是静默地 将其篡改为看起来像有效标签的东西。

返回所有文章