在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):api7/jsonschema开源软件地址(OpenSource Url):https://github.com/api7/jsonschema开源编程语言(OpenSource Language):Lua 96.7%开源软件介绍(OpenSource Introduction):jsonschema: JSON schema validatorThis library provides a JSON schema draft 4, draft 6, draft 7 validator for Lua/LuaJIT. Note that even though it uses the JSON Schema semantics, it is neither bound or limited to JSON. It can be used to validate saner key/value data formats as well (Lua tables, msgpack, bencode, ...). It has been designed to validate incoming data for HTTP APIs so it is decently fast: it works by transforming the given schema into a pure Lua function on-the-fly. Work is currently in progress to make it as JIT-friendly as possible. This project base on ljsonschema. Many thanks to the author InstallationThis module is pure Lua/LuaJIT project, it support Lua 5.2, Lua 5.3, LuaJIT 2.1 beta. The preferred way to install this library is to use Luarocks:
Running the tests:
The project references the pcre regular library. If you were using the LuaJIT of OpenResty, it will use the built-in In addition, the project also relies on the UsageGetting startedlocal jsonschema = require 'jsonschema'
-- Note: do cache the result of schema compilation as this is a quite
-- expensive process
local myvalidator = jsonschema.generate_validator {
type = 'object',
properties = {
foo = { type = 'string' },
bar = { type = 'number' },
},
}
print(myvalidator{ foo='hello', bar=42 }) Advanced usageSome advanced features of JSON Schema are not possible to implement using the standard library and require third party libraries to be work. In order to not force one particular library, and not bloat this library for
the simple schemas, extension points are provided: the local v = jsonschema.generate_validator(schema, {
-- a value used to check null elements in the validated documents
-- defaults to `cjson.null` (if available) or `nil`
null = null_token,
-- function called to match patterns, defaults to `ngx.re.find` in OpenResty
-- or `rex.find` from lrexlib-pcre on other occassions.
-- The pattern given here will obey the ECMA-262 specification.
match_pattern = function(string, patt)
return ... -- boolean value
end,
-- function called to resolve external schemas. It is called with the full
-- url to fetch (without the fragment part) and must return the
-- corresponding schema as a Lua table.
-- There is no default implementation: this function must be provided if
-- resolving external schemas is required.
external_resolver = function(url)
return ... -- Lua table
end,
-- name when generating the validator function, it might ease debugging as
-- as it will appear in stack traces.
name = "myschema",
}) Differences with JSONSchemaDue to the nature of the Lua language, the full JSON schema support is difficult to reach. Some of the limitations can be solved using the advanced options detailed previously, but some features are not supported (correctly) at this time:
On the other hand, some extra features are supported:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论