使用Golang

时间:2017-05-15 10:52:57

标签: json validation go optional

Golang JSON模式验证库验证架构上的必需字段是否存在于服务请求/响应中。

我需要验证服务请求或响应中的任何字段都必须是架构上的属性。如果架构中不存在有效内容中的属性,则验证将失败。

例如: GET 响应:

{
   "pet": "dog",
   "name": "Scooby",
   "licence": "123-123"
}

在我的示例JSON模式中,不需要任何字段。但是,如果我改变了领域" pet" to" petBreed"在我的服务中,它不会被JSON模式验证器捕获(例如https://github.com/xeipuuv/gojsonschema)。

不需要所有字段。任何人都可以建议使用Go中的库:

  1. 验证所有响应字段都在架构中
  2. 如果来自模式的字段不在响应中,则
  3. 不会失败

1 个答案:

答案 0 :(得分:1)

JSON Schema为此目的定义additionalProperties,类似这样的模式应该起作用:

{
    "type": "object",
    "additionalProperties": false,
    "properties":{
        "pet": ...,
        "name": ...,
        "license": ...,
    },
}

这是implemented,但未在gojsonschema中记录。

请注意additionalProperties是一个模式,而不仅仅是一个布尔值,即您可以对未知属性进行任意验证,而不仅仅是禁止它们。