【问题标题】:JSON schema for XMLXML 的 JSON 模式
【发布时间】:2021-07-06 00:38:13
【问题描述】:

我正在尝试获取此特定 xml 结构的 JSON 结构 XML:

<categories>
  <category id="12">Deals</category>
  <category id="15">Navigation</category>
  <category id="16">Personalization</category>
</categories>

如果我尝试这样的 JSON 结构

{
  "categories": {
  {
   "category": "Products and Services",
   "id": "13"
   },
   {
    "category": "Customer Service",
    "id": "913",
    }
  }
}

我得到这样的类别数组。

<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <categories>
    <category>Products and Services</category>
    <id>13</id>
  </categories>
  <categories>
    <category>Products and Services</category>
    <id>913</id>
  </categories>
</root>

我正在尝试使用类别数组获取一个类别元素。我不想丢失 ID 和 category 元素所持有的值。

您能否建议我如何获取给定 XML 的 JSON,而不会丢失元素中的属性、元素值以及不创建多个类别?提前致谢

【问题讨论】:

  • 是什么让你“得到这样的类别数组”?它是您使用的工具吗?
  • 这是来自 web 服务 API 的一段 xml 输出

标签: json xml format schema


【解决方案1】:

没有从 XML 到 JSON 或反之亦然的明确映射:您的问题没有一个正确答案。你也没有真正解释你想要达到的目标。

在 JSON 中表示相同信息的最自然的方式大概是这样的:

[
  { "id":12, "value":"Deals" },
  { "id":15, "value":"Navigation" },
  { "id":16, "value":"Personalization" }
] 

这反映了这样一个事实:在 XML 中,“对象”必须被命名,但“值”不需要,而在 JSON 中,“对象”通常不被命名,但值总是被命名。

因此您可以立即看到,没有任何工具能够自动将数据的最自然的 XML 表示转换为最自然的 JSON 表示,反之亦然,因为每个表示都包含另一个表示中缺少的东西.

【讨论】:

  • 感谢 Michael Kay 的帮助。我正在尝试将 xml 转换为 avro,将 avro 转换为 json 并将其展平以移入云存储。如果我尝试使用建议的 json,展平可能看起来像“categories.item.category”。那是对的吗?如果是,我正在寻找 categories.category 和 categories.category.id 作为扁平结构。
  • 我的建议是使用 XSLT 3.0 进行自定义转换,而不是依赖现成的 XML-to-JSON 转换器,这些转换器永远不会完全生成您想要的 JSON。
  • 是的,我终于创建了 XSLT 来转换传入的 XML :) 谢谢 Michael Kay
猜你喜欢
  • 2014-12-01
  • 2018-06-30
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2018-01-14
  • 2023-03-06
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多