【问题标题】:Specify a value can be a string or null with JSON Schema使用 JSON Schema 指定值可以是字符串或 null
【发布时间】:2013-04-20 22:00:06
【问题描述】:

希望这对其他人来说并不明显,因为我发现https://json-schema.org/ 的文档缺少更详细的信息。我得到一个 JSON 块,其中一些属性可以是 nullstring。如何在 JSON Schema(由 Json.NET 的 JsonSchema.Parse 方法解析)中指定值可以是 null 类型或 string 类型?

我是否缺少一些简单的东西,比如为该类型提供一个数组?例如;

"member_region": { "type": [ "string", null ] } // this throws an exception

另外,有没有人有比 json-schema.org 更好的 JSON Schema 详细信息来源?我在哪里可以找到更多示例?我不想阅读大文档/规范来找到可以在 10 行示例中轻松演示的内容。

【问题讨论】:

    标签: json json.net jsonschema


    【解决方案1】:

    来自https://json-schema.org/understanding-json-schema/reference/type.html

    type 关键字可以是字符串或数组:

    • 如果是字符串,则为上述基本类型之一的名称。
    • 如果是数组,则必须是字符串数组,其中每个字符串是其中一种基本类型的名称,每个元素都是唯一的。在这种情况下,如果 JSON sn-p 匹配 任何 的给定类型,则它是有效的

    同一页面还列出了定义的数据类型名称,包括stringnull

    试试:

    "member_region": { "type": ["string", "null"] }
    

    【讨论】:

    • 这是当前规范中位置的更新链接:json-schema.org/draft/2020-12/…>
    【解决方案2】:

    ["string", "null"] 如果您不使用 RegEx 模式,则可以使用。

    我正在使用日期字段验证器:

        (0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d 
    

    允许 MM/dd/yyyy 模式,但会在空字符串 ("") 处引发不匹配错误

    【讨论】:

    • 空字符串不等于 JSON 中的null
    • 实际上,我用这个解决了这个问题: ((0[1-9]|1[012])[- /.](0[1-9]|[12][0-9 ]|3[01])[- /.](19|20)\\d\\d)*?
    【解决方案3】:

    如果您使用数组语法,则扩展 Explosion Pills 答案:

    "member_region": { "type": [ "string", "null" ] } // this works
    

    因为您是在陈述一个类型,而不是一个示例/值。你不应该去:

     "member_region": { "type": [ "string", null ] } // this throws an exception
    

    【讨论】:

    • 这是唯一适用于 Azure 逻辑应用架构的解决方案。
    • 此解决方案也被 Visual Studio Code 识别。
    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多