您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从XML模式(XSD)生成Json模式

从XML模式(XSD)生成Json模式

:我是Jsonix的作者,Jsonix一个功能强大的开源XML <-> JSON JavaScript映射库。

今天,我发布了具有新JSON Schema生成功能的新版本的Jsonix Schema Compiler

让我们以采购订单模式为例。这是一个片段:

  <xsd:element name="purchaSEOrder" type="PurchaSEOrderType"/>

  <xsd:complexType name="PurchaSEOrderType">
    <xsd:sequence>
      <xsd:element name="shipTo" type="USAddress"/>
      <xsd:element name="billTo" type="USAddress"/>
      <xsd:element ref="comment" minOccurs="0"/>
      <xsd:element name="items"  type="Items"/>
    </xsd:sequence>
    <xsd:attribute name="orderDate" type="xsd:date"/>
  </xsd:complexType>

您可以使用提供的命令行工具来编译此架构:

java -jar jsonix-schema-compiler-full.jar
    -generateJsonSchema
    -p PO
    schemas/purchaSEOrder.xsd

编译器会生成Jsonix映射以及匹配的JSON Schema

结果如下所示(为简洁起见编辑):

{
    "id":"PurchaSEOrder.jsonschema#",
    "deFinitions":{
        "PurchaSEOrderType":{
            "type":"object",
            "title":"PurchaSEOrderType",
            "properties":{
                "shipTo":{
                    "title":"shipTo",
                    "allOf":[
                        {
                            "$ref":"#/deFinitions/USAddress"
                        }
                    ]
                },
                "billTo":{
                    "title":"billTo",
                    "allOf":[
                        {
                            "$ref":"#/deFinitions/USAddress"
                        }
                    ]
                }, ...
            }
        },
        "USAddress":{ ... }, ...
    },
    "anyOf":[
        {
            "type":"object",
            "properties":{
                "name":{
                    "$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/deFinitions/QName"
                },
                "value":{
                    "$ref":"#/deFinitions/PurchaSEOrderType"
                }
            },
            "elementName":{
                "localPart":"purchaSEOrder",
                "namespaceURI":""
            }
        }
    ]
}

现在,此JSON模式是从原始XML模式派生的。它不完全是1:1转换,但是非常非常接近。

生成的JSON模式与生成的Jsonix映射匹配。因此,如果将Jsonix用于XML <-> JSON转换,则应该能够使用生成的JSON模式验证JSON。它还包含来自原始XML模式的所有必需元数据(例如元素,属性和类型名称)。

目前,这是一个新的实验性功能。有某些已知的限制和缺少的功能。但我希望这会很快显现并成熟。

链接

其他 2022/1/1 18:16:15 有454人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶