免责声明:我是Jsonix 的作者,这是一个强大的开源 XMLJSON JavaScript 映射库。
今天我发布了Jsonix Schema Compiler 的新版本,带有新的JSON Schema generation 功能。
我们以Purchase Order 架构为例。这是一个片段:
<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 mappings 以及matching 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 Schema 是从原始 XML Schema 派生的。这不是 1:1 的转换,而是非常非常接近。
生成的 JSON Schema 匹配生成的 Jsonix 映射。因此,如果您使用 Jsonix 进行 XMLJSON 转换,您应该能够使用生成的 JSON Schema 验证 JSON。它还包含来自原始 XML Schema 的所有必需元数据(如元素、属性和类型名称)。
免责声明:目前这是一项新的实验性功能。有一定的已知limitations and missing functionality。但我希望这会很快显现和成熟。
链接: