当前位置: 首页 > 知识库问答 >
问题:

如何指定属性可以是null或带有swagger的引用

甘祺
2023-03-14

我也想用昂首阔步做同样的事情。

为了总结以上问题的答案,使用jsonschema,可以这样做:

{
   "definitions": {
      "Foo": {
         # some complex object
      }
   },

   "type": "object",
   "properties": {
      "foo": {
         "oneOf": [
            {"$ref": "#/definitions/Foo"},
            {"type": "null"}
         ]
      }
   }
}

答案的关键点是使用之一。

注意:一些swagger实现使用x-nullable(或类似的)来指定属性值可以为null,但是,$ref用对象引用的内容替换对象,因此似乎忽略了对x-nullable的任何使用。

共有1个答案

薛泰
2023-03-14

将该属性定义为$refanyof类型:'null'

YAML版本:

foo:
  anyOf:
    - type: 'null'   # Note the quotes around 'null'
    - $ref: '#/components/schemas/Foo'

JSON版本:

"foo": {
    "anyOf": [
        { "type": "null" },
        { "$ref": "#/components/schemas/Foo" }
    ]
}
foo:
  nullable: true
  allOf:
  - $ref: '#/components/schemas/Foo'
"foo": {
    "nullable": true,
    "allOf": [
        { "$ref": "#/components/schemas/Foo" }
    ]
}
 类似资料:
  • 我有一个JSON模式文件,其中一个属性被定义为或: 当转换为YAML(用于OpenAPI/Swagger)时,它变为: 在OpenAPI中定义可为null属性的正确方法是什么?

  • 一年前,我问过如何根据另一个属性的值设置模式对象的类型?我有一个很好的答案,从那以后我一直在使用这个模式。 现在,源数据已经更改——在以下情况下,模式会失败: 源数据包含许多属性,但其中只有两个与此问题相关:“键”和“值” - “值”的类型取决于“键”的值 - 所以我的问题是,我如何允许这两个选项中的一个?我已经尝试了我能想到的任何组合,但是悲惨地失败了。Json.Schema.JSchema无法

  • 我有一个API,成功后返回以下响应: 或者在失败时像下面这样: 只有在请求成功时才会指定filename属性,但如果出现错误,则会提供消息。这意味着消息和文件名属性是“可选的”,但结果属性是必需的。 我尝试在定义中定义这个响应对象,如下所示: 但似乎swagger不喜欢“必需”属性,并将显示以下错误消息: 当我看一个来自swagger的例子时,他们有以下布局,其中有两个不同的响应定义,而不是一个。

  • 问题内容: 在使用hibernate保存父/子对象时遇到麻烦。任何想法将不胜感激。 hibernate映射: InvoiceManager.java 发票.java InvoiceItem.java 问题答案: 由于在 多对一 映射中,每个对象都必须具有附件。 __ 因此,基本思想是您需要在代码中建立该显式关系。有很多方法可以做到这一点。在您的课堂上,我看到了一个方法。我看不到方法。设置项目时,需

  • 我正在使用spring boot 2.0.6和hibernate 5.2.17的web服务。当我用@CreationTimestamp、@Column(nullable=false)和@Temporal(TemporalType.TIMESTAMP)的createTime字段保存对象时,我得到了异常组织。冬眠PropertyValueException:not null属性引用null或瞬态值:c

  • 我是否遗漏了一些简单的东西,比如为类型提供一个数组?例如; 另外,有没有人比json-schema.org更好的JSON模式详细信息来源?我在哪里可以找到更多的例子选择?我不想阅读一个很大的文档/规范来找到可以在10行示例中轻松演示的东西。