如果我在glTF 2.0模式中搜索“枚举”,我会看到很多枚举的定义,比如:
"type": {
"description": "Specifies if the camera uses a perspective or orthographic projection.",
"gltf_detailedDescription": "Specifies if the camera uses a perspective or orthographic projection. Based on this, either the camera's `perspective` or `orthographic` property will be defined.",
"anyOf": [
{
"enum": [ "perspective" ]
},
{
"enum": [ "orthographic" ]
},
{
"type": "string"
}
]
},(来自camera schema)
我对此有几个问题:
的摄像头定义不一致。
提前感谢任何人可以提供的任何清晰度。
发布于 2019-05-24 03:45:25
当时(2017年)我们使用的是JSON schema draft v4,对枚举的支持还没有达到我们需要的程度。以前有一个简单的枚举列表,但我要求在模式中有每个枚举的描述。这可以更好地记录模式中的各个枚举值,并允许格式化软件显示单个枚举值的描述。我在这里提交了一个问题:
https://github.com/KhronosGroup/glTF/issues/891
在这个问题下,oneOf发现了一个问题,使其与TypeScript不兼容,于是决定改用anyOf。尽管有此更改,但您仍然只能选择一个可用的枚举。
后来,在实现此更改的Pull请求中,规范编辑器之一explained表示,末尾的额外"type" : "string"是为了允许未来的向前兼容性。基本上,这意味着允许(并鼓励) glTF 2.0扩展定义核心glTF 2.0模式中不存在的新枚举值,并且它们可以在不违反模式的情况下这样做。但是,它们不能随意添加新字段,因为模式对此有严格的要求。新字段必须放入具有适当名称的extension或extras对象中。但是新的枚举可以直接在现有枚举所在的同一字段中进行。
最终,我们得到的模式对于人类来说可能有点麻烦,但在处理JSON模式的各种验证软件中都能很好地工作。而且人们可以只看Properties Reference README,而不是原始的模式文件,这样看起来更方便。
https://stackoverflow.com/questions/56281523
复制相似问题