jsonschema - 在 JSON 模式中,定义和引用可重用的枚举类型?

标签 jsonschema

我注意到以下内容:Reusable enum types in json schema ,它讨论了在 JSON 架构中定义可重用的枚举类型。

我会假设使用这个可重用的枚举类型是微不足道的,只需指定(在本例中)“MyEnum”的值作为“类型”值。

我不知道 Oxygen XML 的结果是否权威,但我尝试了类似以下的操作:

{
    "$schema": "https://json-schema.org/draft/2019-09/schema#",
    "type": "object",
    "properties": {
        "content": {"$ref": "#/definitions/content_type"}
    },
    "additionalProperties": false,
    "definitions": {
        "costCategory_type": {
            "type": "object",
            "enum": ["VH", "H", "M", "L"]  
        },
        "allowedDevices_type": {
            "type": "object",
            "properties": {
                "costCategory": {
                    "type": "costCategory_type"
                },

在靠近底部的那一行,我引用“costCategory_type”的地方,Oxygen 给我一个语法错误,说

#/definitions/allowedDevices_type/properties/costCategory/type: unknown type: [costCategory_type]

我错过了什么?

最佳答案

是的,type 关键字的值只能来自列表 nullbooleanobject数组字符串数字整数。您可以使用 $ref 关键字引用定义:

...
"properties": {
  "costCategory": {
    "$ref": "#/definitions/costCategory_type",
  }
}

(顺便说一句,你的定义永远不会按原样成功评估,因为你将它定义为“对象”类型,但枚举中的值列表都是字符串。)

关于jsonschema - 在 JSON 模式中,定义和引用可重用的枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65889922/

相关文章:

json - 是否有为 json 模式指定版本的标准

用于根据另一个对象的内容验证对象值的 Json 模式

jsonschema - 基于值的 JSON 模式依赖

json - JSON验证是最佳做法吗?

jsonschema - 我们如何从 json-schema 验证器中的处理报告中提取所有消息

javascript - 在原始架构的同一级别重用远程 JSON 架构中的属性

java - jsonschema2pojo maven插件不生成Java类

python - 使用 python jsonschema 验证日期时间值

javascript - 模式 <[object Object]> 已存在,但定义不同

java - 用于检查 YYYY-MM-DD 日期的 JSON 模式