当前位置: 首页 > 面试题库 >

oneOf对象的Json Schema示例

籍英叡
2023-03-14
问题内容

我试图通过构建验证两种不同对象类型的架构来弄清oneOf的工作原理。例如,一个人(名字,姓氏,运动)和车辆(类型,费用)。

以下是一些示例对象:

{"firstName":"John", "lastName":"Doe", "sport": "football"}

{"vehicle":"car", "price":20000}

问题是我做错了什么以及如何解决。这是模式

{
    "description": "schema validating people and vehicles", 
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [ "oneOf" ],
    "properties": { "oneOf": [
        {
            "firstName": {"type": "string"}, 
            "lastName": {"type": "string"}, 
            "sport": {"type": "string"}
        }, 
        {
            "vehicle": {"type": "string"}, 
            "price":{"type": "integer"} 
        }
     ]
   }
}

当我尝试在此解析器中验证它时:

https://json-schema-validator.herokuapp.com/

我收到以下错误:

   [ {
  "level" : "fatal",
  "message" : "invalid JSON Schema, cannot continue\nSyntax errors:\n[ {\n  \"level\" : \"error\",\n  \"schema\" : {\n    \"loadingURI\" : \"#\",\n    \"pointer\" : \"/properties/oneOf\"\n  },\n  \"domain\" : \"syntax\",\n  \"message\" : \"JSON value is of type array, not a JSON Schema (expected an object)\",\n  \"found\" : \"array\"\n} ]",
  "info" : "other messages follow (if any)"
}, {
  "level" : "error",
  "schema" : {
    "loadingURI" : "#",
    "pointer" : "/properties/oneOf"
  },
  "domain" : "syntax",
  "message" : "JSON value is of type array, not a JSON Schema (expected an object)",
  "found" : "array"
} ]

问题答案:

试试这个:

{
    "description" : "schema validating people and vehicles",
    "type" : "object",
    "oneOf" : [{
        "properties" : {
            "firstName" : {
                "type" : "string"
            },
            "lastName" : {
                "type" : "string"
            },
            "sport" : {
                "type" : "string"
            }
        },
        "required" : ["firstName"]
    }, {
        "properties" : {
            "vehicle" : {
                "type" : "string"
            },
            "price" : {
                "type" : "integer"
            }
        },
        "additionalProperties":false
    }
]
}


 类似资料:
  • JsonSchema.net是一个从JSON数据自动生成JSON Schema的工具. 模式生成根据 IETF JSON Schema Internet Draft. 草案规范, 此工具包括5个主要功能: 接受JSON输入,并根据此输入生成秒速此JSON输入的JSON Schema Provides a GUI to modify the schema generated with useful

  • 注:内容翻译自官网参考文档中 Java Generated Code 的 oneof 一节。 给假设有一个类似这样的oneof定义: oneof oneof_name { int32 foo_int = 4; string foo_string = 9; ... } 在 oneof_name 这个 oneof 中的所有字段将为他们的值使用共享的 oneof_name 对象

  • 注:内容翻译自官网文档 Language Guide (proto3) 中的 Oneof 一节 如果你有一个有很多字段的消息, 而同一时间最多只有一个字段会被设值, 你可以通过使用oneof特性来强化这个行为并节约内存. Oneof 字段和常见字段类似, 除了所有字段共用内存, 并且同一时间最多有一个字段可以设值. 设值oneof的任何成员都将自动清除所有其他成员. 可以通过使用特殊的case()

  • 我使用带thymeleaf 3的Spring靴 我试着展示一个豆子 在我的控制器里我有 在我的车里 在我的位置 在我的胸腺碎片中 当我试图显示这个片段时,我得到 org.attoparser。ParseException:异常评估SpringEL表达式:“cities.id”由:org.springframework.expression.spel引起。SpelEvaluationExceptio

  • 问题内容: 我正在尝试反序列化以下字符串,对于Java来说我还是有些陌生,我无法在我的一生中使用它。我现在仅尝试在对象中解码两个字符串。我的JSON和Java类如下。我得到的结果变量确定。 还有我下面的java类 请原谅我缺乏描述,但是我确信代码会有所帮助。JSON已在其他应用程序中使用,因此不可更改。 谢谢! 问题答案: 这是一些不错的JSON教程,可以帮助您。 GSON JSON格式 带有源代

  • id Number - 与显示相关联的唯一标识符。 rotationNumber -顺时针方向的屏幕旋转角度, 可选0,90,180,270。 scaleFactor Number - 输出设备的像素比例因子。 touchSupport String - 是否支持触摸,可选 available, unavailable, unknown. bounds Object Rectangle​ size