All Projects → APIDevTools → Json Schema Ref Parser

APIDevTools / Json Schema Ref Parser

Licence: mit
Parse, Resolve, and Dereference JSON Schema $ref pointers in Node and browsers

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Json Schema Ref Parser

Swagger Parser
Swagger 2.0 and OpenAPI 3.0 parser/validator
Stars: ✭ 710 (+33.46%)
Mutual labels:  json-schema, resolver, parser
React Json Schema
Configure and build views using JSON schemas mapped to React components
Stars: ✭ 131 (-75.38%)
Mutual labels:  json-schema, parser
json-ref-resolver
[Deprecated] Recursively resolve JSON pointers and remote authorities.
Stars: ✭ 27 (-94.92%)
Mutual labels:  resolver, json-schema
Prance
Resolving Swagger/OpenAPI 2.0 and 3.0 Parser
Stars: ✭ 133 (-75%)
Mutual labels:  resolver, parser
Swagger Cli
Swagger 2.0 and OpenAPI 3.0 command-line tool
Stars: ✭ 321 (-39.66%)
Mutual labels:  json-schema, parser
Rsql Parser
Parser for RSQL / FIQL – query language for RESTful APIs
Stars: ✭ 463 (-12.97%)
Mutual labels:  parser
Globalize
A JavaScript library for internationalization and localization that leverages the official Unicode CLDR JSON data
Stars: ✭ 4,612 (+766.92%)
Mutual labels:  parser
Compiler
The Hoa\Compiler library.
Stars: ✭ 458 (-13.91%)
Mutual labels:  parser
Form
🚂 Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
Stars: ✭ 454 (-14.66%)
Mutual labels:  parser
Spec Tools
Clojure(Script) tools for clojure.spec
Stars: ✭ 524 (-1.5%)
Mutual labels:  json-schema
Html Parser
php html parser,类似与PHP Simple HTML DOM Parser,但是比它快好几倍
Stars: ✭ 510 (-4.14%)
Mutual labels:  parser
Kong
Kong is a command-line parser for Go
Stars: ✭ 481 (-9.59%)
Mutual labels:  parser
Invenio
Invenio digital library framework
Stars: ✭ 469 (-11.84%)
Mutual labels:  json-schema
Schm
Composable schemas for JavaScript and Node.js
Stars: ✭ 498 (-6.39%)
Mutual labels:  json-schema
Stream Json
The micro-library of Node.js stream components for creating custom JSON processing pipelines with a minimal memory footprint. It can parse JSON files far exceeding available memory streaming individual primitives using a SAX-inspired API.
Stars: ✭ 462 (-13.16%)
Mutual labels:  parser
Swiftcsv
CSV parser for Swift
Stars: ✭ 511 (-3.95%)
Mutual labels:  parser
Minigo
minigo🐥is a small Go compiler made from scratch. It can compile itself.
Stars: ✭ 456 (-14.29%)
Mutual labels:  parser
Sweet Core
Sweeten your JavaScript.
Stars: ✭ 4,501 (+746.05%)
Mutual labels:  parser
Opendirectorydownloader
Indexes open directories
Stars: ✭ 502 (-5.64%)
Mutual labels:  parser
Corexlsx
Excel spreadsheet (XLSX) format parser written in pure Swift
Stars: ✭ 481 (-9.59%)
Mutual labels:  parser

JSON Schema $Ref Parser

Parse, Resolve, and Dereference JSON Schema $ref pointers

Build Status Coverage Status

npm Dependencies License Buy us a tree

OS and Browser Compatibility

The Problem:

You've got a JSON Schema with $ref pointers to other files and/or URLs. Maybe you know all the referenced files ahead of time. Maybe you don't. Maybe some are local files, and others are remote URLs. Maybe they are a mix of JSON and YAML format. Maybe some of the files contain cross-references to each other.

{
  "definitions": {
    "person": {
      // references an external file
      "$ref": "schemas/people/Bruce-Wayne.json"
    },
    "place": {
      // references a sub-schema in an external file
      "$ref": "schemas/places.yaml#/definitions/Gotham-City"
    },
    "thing": {
      // references a URL
      "$ref": "http://wayne-enterprises.com/things/batmobile"
    },
    "color": {
      // references a value in an external file via an internal reference
      "$ref": "#/definitions/thing/properties/colors/black-as-the-night"
    }
  }
}

The Solution:

JSON Schema $Ref Parser is a full JSON Reference and JSON Pointer implementation that crawls even the most complex JSON Schemas and gives you simple, straightforward JavaScript objects.

  • Use JSON or YAML schemas — or even a mix of both!
  • Supports $ref pointers to external files and URLs, as well as custom sources such as databases
  • Can bundle multiple files into a single schema that only has internal $ref pointers
  • Can dereference your schema, producing a plain-old JavaScript object that's easy to work with
  • Supports circular references, nested references, back-references, and cross-references between files
  • Maintains object reference equality — $ref pointers to the same value always resolve to the same object instance
  • Tested in Node v10, v12, & v14, and all major web browsers on Windows, Mac, and Linux

Example

$RefParser.dereference(mySchema, (err, schema) => {
  if (err) {
    console.error(err);
  }
  else {
    // `schema` is just a normal JavaScript object that contains your entire JSON Schema,
    // including referenced files, combined into a single object
    console.log(schema.definitions.person.properties.firstName);
  }
})

Or use async/await syntax instead. The following example is the same as above:

try {
  let schema = await $RefParser.dereference(mySchema);
  console.log(schema.definitions.person.properties.firstName);
}
catch(err) {
  console.error(err);
}

For more detailed examples, please see the API Documentation

Installation

Install using npm:

npm install @apidevtools/json-schema-ref-parser

Usage

When using JSON Schema $Ref Parser in Node.js apps, you'll probably want to use CommonJS syntax:

const $RefParser = require("@apidevtools/json-schema-ref-parser");

When using a transpiler such as Babel or TypeScript, or a bundler such as Webpack or Rollup, you can use ECMAScript modules syntax instead:

import $RefParser from "@apidevtools/json-schema-ref-parser";

Browser support

JSON Schema $Ref Parser supports recent versions of every major web browser. Older browsers may require Babel and/or polyfills.

To use JSON Schema $Ref Parser in a browser, you'll need to use a bundling tool such as Webpack, Rollup, Parcel, or Browserify. Some bundlers may require a bit of configuration, such as setting browser: true in rollup-plugin-resolve.

API Documentation

Full API documentation is available right here

Contributing

I welcome any contributions, enhancements, and bug-fixes. Open an issue on GitHub and submit a pull request.

Building/Testing

To build/test the project locally on your computer:

  1. Clone this repo
    git clone https://github.com/APIDevTools/json-schema-ref-parser.git

  2. Install dependencies
    npm install

  3. Run the tests
    npm test

License

JSON Schema $Ref Parser is 100% free and open-source, under the MIT license. Use it however you want.

This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.

Big Thanks To

Thanks to these awesome companies for their support of Open Source developers ❤

Stoplight SauceLabs Coveralls

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].