All Projects → epoberezkin → Json Schema Traverse

epoberezkin / Json Schema Traverse

Licence: mit
Traverse JSON Schema passing each schema object to callback

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Json Schema Traverse

Ansible Schema Generator
Generate JSON schema for language servers from Ansible module documentation
Stars: ✭ 30 (-57.75%)
Mutual labels:  json-schema
Univalue
High performance RAII C++ JSON library and universal value object class
Stars: ✭ 46 (-35.21%)
Mutual labels:  json-schema
Schemasafe
A reasonably safe JSON Schema validator with draft-04/06/07/2019-09 support.
Stars: ✭ 67 (-5.63%)
Mutual labels:  json-schema
Brutusin Rpc
Self-describing JSON-RPC web services over HTTP, with automatic API description based on JSON-Schema
Stars: ✭ 36 (-49.3%)
Mutual labels:  json-schema
Uvicorn Gunicorn Fastapi Docker
Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python 3.6 and above with performance auto-tuning. Optionally with Alpine Linux.
Stars: ✭ 1,014 (+1328.17%)
Mutual labels:  json-schema
Jsonschema Key Compression
Compress json-data based on its json-schema while still having valid json
Stars: ✭ 59 (-16.9%)
Mutual labels:  json-schema
Spectral
A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v2 & v3.
Stars: ✭ 876 (+1133.8%)
Mutual labels:  json-schema
Avocado
Strongly-typed MongoDB driver for Rust
Stars: ✭ 70 (-1.41%)
Mutual labels:  json-schema
Oakdex Pokedex
Ruby Gem and Node Package for comprehensive Generation 1-7 Pokedex data, including 809 Pokémon, uses JSON schemas to verify the data
Stars: ✭ 44 (-38.03%)
Mutual labels:  json-schema
Json Schema Form Core
Core library
Stars: ✭ 61 (-14.08%)
Mutual labels:  json-schema
Analysispreservation.cern.ch
Source code for the CERN Analysis Preservation portal
Stars: ✭ 37 (-47.89%)
Mutual labels:  json-schema
Ncform
🍻 ncform, a very nice configuration generation way to develop forms ( vue, json-schema, form, generator )
Stars: ✭ 1,009 (+1321.13%)
Mutual labels:  json-schema
Autocomplete Json
Atom autocomplete for JSON files
Stars: ✭ 60 (-15.49%)
Mutual labels:  json-schema
Jschema
JSON Schema implementation
Stars: ✭ 30 (-57.75%)
Mutual labels:  json-schema
Scala Jsonschema
Scala JSON Schema
Stars: ✭ 68 (-4.23%)
Mutual labels:  json-schema
Fastapi
FastAPI framework, high performance, easy to learn, fast to code, ready for production
Stars: ✭ 39,588 (+55657.75%)
Mutual labels:  json-schema
Rest Layer
REST Layer, Go (golang) REST API framework
Stars: ✭ 1,068 (+1404.23%)
Mutual labels:  json-schema
Target Postgres
A Singer.io Target for Postgres
Stars: ✭ 70 (-1.41%)
Mutual labels:  json-schema
Play Json Schema Validator
JSON Schema Validation with Play JSON
Stars: ✭ 68 (-4.23%)
Mutual labels:  json-schema
Laravel Json Schema Assertions
JSON Schema assertions for the Laravel framework
Stars: ✭ 61 (-14.08%)
Mutual labels:  json-schema

json-schema-traverse

Traverse JSON Schema passing each schema object to callback

build npm coverage

Install

npm install json-schema-traverse

Usage

const traverse = require('json-schema-traverse');
const schema = {
  properties: {
    foo: {type: 'string'},
    bar: {type: 'integer'}
  }
};

traverse(schema, {cb});
// cb is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}

// Or:

traverse(schema, {cb: {pre, post}});
// pre is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
//
// post is called 3 times with:
// 1. {type: 'string'}
// 2. {type: 'integer'}
// 3. root schema

Callback function cb is called for each schema object (not including draft-06 boolean schemas), including the root schema, in pre-order traversal. Schema references ($ref) are not resolved, they are passed as is. Alternatively, you can pass a {pre, post} object as cb, and then pre will be called before traversing child elements, and post will be called after all child elements have been traversed.

Callback is passed these parameters:

  • schema: the current schema object
  • JSON pointer: from the root schema to the current schema object
  • root schema: the schema passed to traverse object
  • parent JSON pointer: from the root schema to the parent schema object (see below)
  • parent keyword: the keyword inside which this schema appears (e.g. properties, anyOf, etc.)
  • parent schema: not necessarily parent object/array; in the example above the parent schema for {type: 'string'} is the root schema
  • index/property: index or property name in the array/object containing multiple schemas; in the example above for {type: 'string'} the property name is 'foo'

Traverse objects in all unknown keywords

const traverse = require('json-schema-traverse');
const schema = {
  mySchema: {
    minimum: 1,
    maximum: 2
  }
};

traverse(schema, {allKeys: true, cb});
// cb is called 2 times with:
// 1. root schema
// 2. mySchema

Without option allKeys: true callback will be called only with root schema.

Enterprise support

json-schema-traverse package is a part of Tidelift enterprise subscription - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.

Security contact

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].