【问题标题】:Validate JSON Schema for list of known values验证 JSON Schema 以获取已知值列表
【发布时间】:2016-05-30 15:53:56
【问题描述】:

我的代码中有一个特殊的枚举案例,需要对其进行验证:

{
  "status": 10
}

让我们使用这个假想的有效值列表:

var valid = [10, 20, 23, 27];

如何更改我的 JSON 架构以验证这些值之一?

{
  type: 'object',
  required: ['status'],
  properties: {
    status: { type: number },
  }
}

【问题讨论】:

    标签: javascript jsonschema


    【解决方案1】:

    您只需将status 属性定义为enum

    {
        "type" : "object",
        "required" : ["status"],
        "properties" : {
            "status" : {
                "type" : "number",
                "enum" : [10, 20, 23, 27]
            }
        }
    }
    

    【讨论】:

    【解决方案2】:

    如果我理解正确,我认为您必须遍历所有值,因为 Javascript 没有枚举之类的东西。

    var validValues = [ 10, 20, 23, 27 ];
    var statusType = json.properties.status.type;
    
    /* This function call will return a boolean that tells you wether the value in your json is valid or not.*/
    isValid( statusType ); 
    
    function isValid( statusType )
    {
      for( var i = 0; i < validValues.length; i++ )
        if( statusType === validValues[i] )
          return true;
    
      return false;
    }
    

    我已经稍微简化了这个例子,但你会明白我的意思。

    【讨论】:

    • 不,不是,我可能误解了这个问题。我提供了一种在 Javascript 中手动验证 JSON 的方法。原因是 OP 包含了 Javascript 标签。但是现在您发表了评论,我怀疑我的答案是 OP 正在寻找的答案。
    • 我猜你不知道 JSON Schema,它在 OP 中提到了两次。看看——它很有用:json-schema.org
    猜你喜欢
    • 2014-04-29
    • 1970-01-01
    • 2021-04-18
    • 2019-10-18
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多