You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Liquid Studio转换XSD至JSON Schema时非必填字段被误设为必填

XSD转JSON Schema时Liquid Studio错误将minOccurs=0的元素标记为必填

我在用Liquid Studio把XSD转换为JSON Schema时遇到了问题:XSD中设置minOccurs="0"的非必填元素,转换后的JSON Schema里被错误标记为必填字段。

原始XSD代码

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio (https://www.liquid-technologies.com)-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element id="T01" name="Test">
        <xs:complexType>
            <xs:sequence>
                <xs:element id="T02" name="Form" maxOccurs="40">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element id="T03" name="Numbers" minOccurs="0" maxOccurs="500">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element id="N01" name="Attr1" minOccurs="0" />
                                        <xs:element id="N02" name="Attr2" minOccurs="0" />
                                        <xs:element id="N03" name="Attr3" minOccurs="0">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:minLength value="1" />
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element id="T04" name="List">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Attr1" id="L01"/>
                                        <xs:element name="Attr2" id="L02"/>
                                        <xs:element name="Attr3" id="L03" minOccurs="0" maxOccurs="2"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Liquid Studio输出的JSON Schema

{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
        "Test": {
            "$ref": "#/$defs/Test"
        }
    },
    "additionalProperties": false,
    "required": [
        "Test"
    ],
    "$defs": {
        "Test": {
            "type": "object",
            "properties": {
                "Form": {
                    "type": "array",
                    "maxItems": 40,
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "properties": {
                            "Numbers": {
                                "type": "array",
                                "maxItems": 500,
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "Attr1": {
                                            "type": "object",
                                            "additionalProperties": false
                                        },
                                        "Attr2": {
                                            "type": "object",
                                            "additionalProperties": false
                                        },
                                        "Attr3": {
                                            "type": "string",
                                            "minLength": 1
                                        }
                                    },
                                    "additionalProperties": false
                                }
                            },
                            "List": {
                                "type": "object",
                                "properties": {
                                    "Attr1": {
                                        "type": "object",
                                        "additionalProperties": false
                                    },
                                    "Attr2": {
                                        "type": "object",
                                        "additionalProperties": false
                                    },
                                    "Attr3": {
                                        "type": "array",
                                        "maxItems": 2,
                                        "items": {
                                            "type": "object",
                                            "additionalProperties": false
                                        }
                                    }
                                },
                                "additionalProperties": false,
                                "required": [
                                    "Attr1",
                                    "Attr2",
                                    "Attr3"
                                ]
                            }
                        },
                        "additionalProperties": false,
                        "required": [
                            "Numbers",
                            "List"
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "Form"
            ]
        }
    }
}

错误点说明

  • XSD中Numbers元素明确设置了minOccurs="0",属于非必填,但转换后的JSON Schema里,Form对象的required数组包含了Numbers,将其错误标记为必填字段。
  • XSD中List下的Attr3元素设置了minOccurs="0",同样是非必填,但JSON Schema里List对象的required数组包含了Attr3,也被错误设为必填。

内容的提问来源于stack exchange,提问作者pokeyoyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:00:08