有谁知道如何从现有的XML模式(XSD文件)生成JSON schema? 是否有任何工具可用于此?从XML模式生成Json模式(XSD)
回答
最初问这个问题一年后,JSON Schema仍然是IETF草案文档。截至撰写本文时(2011年10月18日),工作组正试图就规范草案4达成一致。虽然有几个推测性验证实现(请参阅http://json-schema.org/),但大多数工具供应商并未投入太多精力实施JSON模式开发,编辑或转换工具。
最新的IETF草案文件于2013年8月到期,似乎没有人再追求这一努力。 – 2014-03-28 23:17:53
我认为这是旧的,但即使在历史背景下,这也不能回答所问的问题。 – vossad01 2017-08-25 16:37:45
是的,但在将json转换为xml和xml后,您可以使用trang应用程序(http://www.thaiopensource.com/relaxng/trang.html)从xml文件创建xsd。
但这是错误的方向 – vipw 2012-10-05 09:39:55
JSON Schema不打算与XML Schema等同使用。有一个功能,但没有在其他功能。
一般来说,您可以创建一个从XML到JSON的映射,然后再返回,但XML模式和JSON模式并非如此。这就是说,如果你已经将XML文件映射到JSON,那么很可能制作一个JSON Schema来验证JSON,几乎和XSD验证XML一样。但它不是一个直接映射。而且不可能保证它将验证JSON与XSD验证XML完全相同。由于这个原因,除非这两个规范是100%兼容的特性,否则将验证系统从XML/XSD迁移到JSON/JSON Schema需要人工干预。
我不明白这一点。你能举个例子吗? – Fenil 2016-07-07 14:18:02
比方说,你有什么样 <男人的名字=“弗雷德”><狗的名字=“雷克斯”> 您可以定义的映射来表示JSON中的实体,例如: {“类型” :“man”,name:'Fred',pets:[{type:'dog',name:'Rex'}]} 但是,不能保证您可以构建XSD到Json Schema的映射,同一套文件 – 2016-07-08 02:14:13
免责声明:我是Jsonix的作者,这是一个功能强大的开源XML < - > JSON 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模式是从原始的XML Schema的。这不完全是1:1的转变,但非常接近。
生成的JSON模式匹配生成的Jsonix映射。因此,如果您使用JSONix进行XML < - > JSON转换,您应该能够使用生成的JSON Schema来验证JSON。它还包含源于XML Schema的所有必需元数据(如元素,属性和类型名称)。
声明:目前这是一个新的实验性功能。有一定知道limitations and missing functionality。但是我期待这种体现和成熟非常快。
链接:
免责声明:我jgeXml的作者。
jgexml具有基于Node.js的实用程序xsd2json
,它在XML模式(XSD)和JSON模式文件之间进行转换。
与其他选项一样,这不是1:1的转换,您可能需要手动编辑输出以改进JSON模式验证,但它已被用于表示OpenAPI中的复杂XML模式(招摇)定义。
"PurchaseOrderType": {
"type": "object",
"properties": {
"shipTo": {
"$ref": "#/definitions/USAddress"
},
"billTo": {
"$ref": "#/definitions/USAddress"
},
"comment": {
"$ref": "#/definitions/comment"
},
"items": {
"$ref": "#/definitions/Items"
},
"orderDate": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}.*$"
}
},
复制XML模式在这里&得到JSON模式代码到online tools其可用于生成XML模式JSON模式:
在另一个答案给出的purchaseorder.xsd的样品呈现。
- 1. 使用Java从XSD模式生成xml
- 2. 从模式生成XML
- 3. 从XML生成SQL模式
- 4. 生成从JSON模式
- 5. 从简单的XSD模式生成Xml文档
- 6. 生成JSON模式smaple JSON
- 7. 为.NET类生成XSD模式
- 8. 生成Java类JSON模式
- 9. 是否有工具可以通过Java从XML模式生成JSON模式?
- 10. 使用JavaScript从模式生成XML
- 11. 自动从XML生成SQL模式
- 12. 从XML模式生成表单键
- 13. 我使用xsd从XML模式生成类。我如何将它们写回XML?
- 14. 需要为以下xml生成XSD模式?
- 15. 从xsd生成xml
- 16. 有没有人听说过生成Json模式的JSON模式?
- 17. XSD模式将XML数据转换为JSON格式的问题
- 18. 从hsql生成模式
- 19. 从模式生成jaxb类
- 20. eclipse功能如何从实现的xsd模式生成示例xml?
- 21. 在Maven中从JAXB类型生成XSD模式?
- 22. 从xsd模式生成没有继承的类
- 23. 停止xsd.exe从xsd模式自动生成C++头文件
- 24. 从* .xsd模式文件自动生成objective-c类
- 25. Angular2 - 从JSON模式获取属性键以生成html模板
- 26. 如何以编程方式从类型生成xml模式?
- 27. 从SQL Server 2005生成XML格式的表模式?
- 28. web表单生成xml模式
- 29. 从Java JAXB注释类生成的模式中生成XSD限制
- 30. 在Python中生成JSON模式
我认为真正的问题是“是否可以在JSON模式和XML模式之间进行映射?”不是无关紧要的。也许这个问题可能会被重写。 – 2014-08-15 19:34:39
Falco Nogatz在2013年做了一篇BSc论文,导致了[xsd2json](https://github.com/fnogatz/xsd2json)。 – supervacuo 2014-11-04 18:01:09