如何在 json 模式中表示 sum/union 类型

Posted

技术标签:

【中文标题】如何在 json 模式中表示 sum/union 类型【英文标题】:How to represent sum/union types in in json schema 【发布时间】:2016-05-28 18:51:13 【问题描述】:

我正在尝试使用 json-schema 记录 JSON 的现有使用。对于对象属性之一,系统允许以下两种可能性。

要么


    "tracking_number" : 123

或者


    "tracking_number" : [ 123, 124, 125 ]

如何使用 json 模式来表达这一点?

【问题讨论】:

【参考方案1】:

使用anyOf 断言该属性必须符合一个或另一个架构。


    "type": "object",
    "properties": 
        "tracking_number": 
            "anyOf": [
                 "$ref": "#/definitions/tracking_number" ,
                 "type": "array", "items":  "$ref": "#/definitions/tracking_number" 
            ]
    ,
    "definitions": 
        "tracking_number":  "type": "integer" 
    

【讨论】:

事实证明,在这种情况下,“oneOf”对我来说更好。但你让我走上了正确的道路。 这里描述了这些关键字:json-schema.org/understanding-json-schema/reference/…

以上是关于如何在 json 模式中表示 sum/union 类型的主要内容,如果未能解决你的问题,请参考以下文章

如果它们来自数据源,如何在 graphql 模式中表示枚举?

如何在 Angular 类中表示嵌套的 JSON?

使用 circe 时如何在 Scala 中表示动态 JSON 键

如何在 Swagger Spec (swagger.json) 中表示“授权:承载 <token>”

如何在 SQL 数据库中表示非 SQL 自定义模式结构

如果我在 ERD 中表示 JSON 模型是不是有效?