当前位置:  开发笔记 > 前端 > 正文

JSON模式枚举与单值的模式

如何解决《JSON模式枚举与单值的模式》经验,为你挑选了2个好方法。

我有一个示例json:

{
    "type": "persons",
    "id": 2,
    "attributes": {
        "first": "something",
        "second": "something else"
    }
}

我必须为它制作一个模式(使用JSON API规范和JSON模式文档):

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "type": {
            "type": "string",
            "pattern": "^persons$"
        },
        "id": {
            "type": "integer"
        },
        "attributes": {
            "type": "object",
            "properties": {...}
        }
    },
    "required": ["type", "id", "attributes"]
}

问题是:如果"类型"唯一可接受的值是"人",我应该使用模式模式(如上所述)还是枚举类似

"enum": ["persons"]

我无法从文档中得到任何明确的答案,尽管在规范枚举中的示例用于单个值.你有什么看法?



1> Jason Desros..:

最终,它并不重要.两者都有效,两者都合理.也就是说,我见过的最常见的方法是使用enum.两者都不是完美的可读性,但我认为enum有两个原因更好.

    使用pattern需要两行来表达.使用enum只需要一个因为type数组中的值所暗示的.两条线比一条线更难读,所以如果那条线足够表达,我说坚持一条线.

    不是每个人都习惯阅读正则表达式. enum因此可能更容易接近.



2> schettino72..:

自草案6起,有一个const针对此用例的新关键字。

"type": {
        "type": "string",
        "const": "persons"
},

http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.1.3

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有