jsonschema icon indicating copy to clipboard operation
jsonschema copied to clipboard

How do I use not keyword in Lua?

Open howiezhao opened this issue 3 years ago • 1 comments

In jsonschema we have not keyword, but how can I use it in Lua?

For example, We have jsonschema:

"dependencies": {
  "field_2": { "not": { "required": ["field_3"] } },
  "field_3": { "not": { "required": ["field_2"] } }
}

How do we represent it in Lua, I try like below but it doesn't work:

dependencies = {
    field_2 = {
        ["not"] = {
            required = {
                "field_3"
            }
        }
    },
    field_3 = {
        ["not"] = {
            required = {
                "field_2"
            }
        }
    },
}

Can someone help me?

howiezhao avatar Jun 07 '22 02:06 howiezhao

It works for me:

#!/usr/bin/env resty


local schema = {
    type = "object",
    properties = {
        field_2 = {type = "integer", exclusiveMinimum = 0},
        field_3 = {type = "integer",  exclusiveMinimum = 0},
    },
    dependencies = {
        field_2 = {
            ["not"] = {
                required = {
                    "field_3"
                }
            }
        },
        field_3 = {
            ["not"] = {
                required = {
                    "field_2"
                }
            }
        },
    }
}
local jsonschema = require 'jsonschema'
local myvalidator = jsonschema.generate_validator(schema)
print(myvalidator({field_2 = 1, field_3 = 1}))
print(myvalidator({field_2 = 1}))

Run:

falsefailed to validate dependent schema for "field_2": value wasn't supposed to match schema
true

spacewander avatar Jun 07 '22 06:06 spacewander