• Stars
    star
    230
  • Rank 174,053 (Top 4 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A JSON Schema V4 and Hyperschema V4 parser and validator.

json_schema

A JSON Schema V4 and Hyperschema V4 parser and validator.

Validate some data based on a JSON Schema:

gem install json_schema
validate-schema schema.json data.json

Programmatic

require "json"
require "json_schema"

# parse the schema - raise SchemaError if it's invalid
schema_data = JSON.parse(File.read("schema.json"))
schema = JsonSchema.parse!(schema_data)

# expand $ref nodes - raise SchemaError if unable to resolve
schema.expand_references!

# validate some data - raise ValidationError if it doesn't conform
data = JSON.parse(File.read("data.json"))
schema.validate!(data)

# iterate through hyperschema links
schema.links.each do |link|
  puts "#{link.method} #{link.href}"
end

# abort on first error, instead of listing them all:
schema.validate!(data, fail_fast: true)

Errors have a message (for humans), and type (for machines). ValidationErrors also include a path, a JSON pointer to the location in the supplied document which violated the schema. See errors for more info.

Non-bang methods return a two-element array, with true/false at index 0 to indicate pass/fail, and an array of errors at index 1 (if any).

Passing fail_fast: true (default: false) will cause the validator to abort on the first error it encounters and report just that. Even on fully valid data this can offer some speed improvement, since it doesn't have to collect error messages that might be later discarded (think of e.g. the anyOf directive).

Development

Run the test suite with:

rake

Or run specific suites or tests with:

ruby -Ilib -Itest test/json_schema/validator_test.rb
ruby -Ilib -Itest test/json_schema/validator_test.rb -n /anyOf/

Release

  1. Update the version in json_schema.gemspec as appropriate for semantic versioning and add details to CHANGELOG.

  2. git commit those changes with a message like "Bump version to x.y.z".

  3. Run the release task:

    bundle exec rake release
    

More Repositories

1

redis-cell

A Redis module that provides rate limiting in Redis as a single command.
Rust
1,189
star
2

sorg

A Go-based static site generator that compiles brandur.org.
Go
486
star
3

heroku-http-api-design

The Heroku HTTP API Design Guide, forked to look more like its original pre-GitBook state with a more easily digestible single-page format.
167
star
4

hutils

A collection of command line utilities for working with logfmt.
Ruby
108
star
5

tmux-extra

Configuration and scripts for sane Tmux default behavior.
Shell
108
star
6

rocket-rides-atomic

Ruby
94
star
7

sinatra-router

A tiny vendorable router that makes it easy to try routes from a number of different modular Sinatra applications.
Ruby
61
star
8

rhttpserve

A tiny HTTP server that can serve files out of any rclone remote.
Go
39
star
9

rocket-rides-unified

Ruby
27
star
10

podcore

Rust
22
star
11

microservices

21
star
12

blackswan

A project designed to provide personal data ownership and display.
JavaScript
21
star
13

heroku-buildpack-mono

ASP.NET buildpack deployed on top of Mono and XSP.
Shell
18
star
14

postgres-practices

18
star
15

rocket-rides-scalable

Ruby
16
star
16

singularity

A demonstration of a very simple static site generator that deploys to S3 through Travis CI.
Go
15
star
17

dorian

A personal identity manager and aggregator written in Rails 3.1.
JavaScript
13
star
18

casseo

A Graphite dashboard for the command line.
Ruby
12
star
19

modulir

Modulir is an experimental mini-framework for static site generation.
Go
11
star
20

connections-test

Go
10
star
21

wanikaniapi

A Go client for WaniKani's API (https://docs.api.wanikani.com/).
Go
10
star
22

qself

Qself is a small tool to sync personal data from APIs down to local TOML files for easier portability and storage.
Go
10
star
23

cmark2jira

Translate good CommonMark into bad JIRA markup.
Rust
9
star
24

brandur

Go
9
star
25

hncheck

A very simple app that checks to see if something under one of your domains has been submitted to HN, and emails you if it has.
Go
9
star
26

simple-schema

9
star
27

que-degradation-test

Ruby
8
star
28

org

A now defunct project that served my personal site.
8
star
29

mutelight-v2

Content for my technical journal at mutelight.org, designed to be used with Hekla.
Ruby
8
star
30

geotools

Updated mirror for the Geotools.Net project.
C#
8
star
31

redis-haskell

Haskell bindings for Redis, a fast persistent key-value store.
Haskell
7
star
32

logfmt

logfmt parser in Rust.
Rust
7
star
33

hekla

Responsive blogging engine for ephemeral platforms.
JavaScript
7
star
34

mastodon-cross-post

A simple project that cross-posts tweets to Mastodon.
Go
6
star
35

passages-signup

A backend for the signup forms of my newsletters "Nanoglyph" and "Passages & Glass".
Go
6
star
36

heroku-agent

A lightweight process that can communicate with the Heroku CLI and hk to provide more expendient fulfillment of API requests and better convenience of use.
Go
6
star
37

simplebox

Package simplebox provides a simple, easy-to-use cryptographic API where all of the hard decisions have been made for you in advance.
Go
6
star
38

neospring

Go
6
star
39

logs

Ruby
5
star
40

perpetual

Go
5
star
41

slides

An extremely simplistic logs-as-data implementation.
Ruby
5
star
42

rack-instruments

Rack middleware providing basic instrumentation.
Ruby
4
star
43

http_accept

Simple library for HTTP Accept header parsing and ordering.
Ruby
4
star
44

composable

Slides for my talk "Post-Rails? Composable Apps with a First-class API".
JavaScript
4
star
45

middleware-rust

Rust
4
star
46

heroku-mono-build

Heroku-based build recipe for Mono and XSP.
Shell
4
star
47

rack-robots

Rack middleware that denies all robots for staging and development environments.
Ruby
4
star
48

obsidian

Web framework in Haskell to power factz.org. Deprecated in favor of the Rails Facts app.
Haskell
3
star
49

the-surf

Article content for the Surf.
Shell
3
star
50

facts-cli

Command line interface based on Thor for the Facts sever project.
Ruby
3
star
51

mutelight-v1

Nanoc source for my blog at mutelight.org. Deprecated in favor of Askja.
Ruby
3
star
52

artifice-excon

A version of Wycat's Artifice for use with Excon.
Ruby
3
star
53

facts-api

Facts API.
Ruby
3
star
54

heroku-buildpack-mono-build

Builds binaries for the herok-buildpack-mono project.
Shell
2
star
55

db-fill

PLpgSQL
2
star
56

heroku-api-blog

JavaScript
2
star
57

nanowrimo10

My current contribution for National Novel Writing Month. See http://nanowrimo.org.
2
star
58

rakenet

Command line build and testing infrastructure for a .NET project.
Ruby
2
star
59

dping

Ruby
2
star
60

cping

Go
2
star
61

mozjpeg-builder

2
star
62

zendtools.vim

Various useful functions for working in PHP with Zend.
Vim Script
2
star
63

surf

Source code for my blog 'the Surf', uses a custom (and included) static generator.
Ruby
2
star
64

sharks

A scraping and data visualization service for Global Shark Attack File records.
Ruby
2
star
65

spring83-keygen

2
star
66

gal

Go
2
star
67

brandur-old

Rails app to power brandur.org. This has been deprecated in favor of Dorian.
Ruby
2
star
68

service-stub-example

Ruby
2
star
69

imagemagick-builder

2
star
70

sequel-instruments

Basic instrumentation for Sequel.
Ruby
2
star
71

facts-nodejs

Facts database for increasing retention of general knowledge, and for winning arguments. Deprecated in favor of the Rails version.
JavaScript
2
star
72

facts

A tool for getting smarter and winning arguments.
Ruby
2
star
73

d2

A cross-version compatible shortcut for invoking a Ruby debugger.
Ruby
2
star
74

omniauth-heroku

Ruby
2
star
75

postgres-table-rename-test

Ruby
2
star
76

askja

Minimalist blogging platform written in Rails as a flexible alternative to static generators.
Ruby
2
star
77

facts-web

Frontend interface that talks to facts-api.
JavaScript
2
star
78

asp-net-sample

Sample ASP.NET MVC application that can run on Heroku.
C#
1
star
79

wgt2

Go
1
star
80

magmv

A program to rename poorly titled magazine PDF files.
Go
1
star
81

deathguild

Creates Spotify playlists for each night of Death Guild.
HTML
1
star
82

cheat-sheets-dev

A set of cheat sheets designed to centralize information to quicken the development process.
1
star
83

heroku-hyper-schema

1
star
84

umbrella-rust

Rust
1
star
85

certrotate

Go
1
star
86

php-mbstring-overload-tests

Simple test suite to demonstrate PHP's mbstring function overloading.
C
1
star
87

the-surf-old

Next generation of the Surf (journal). Deprecated in favor Hekla.
Ruby
1
star
88

schemadoc

Ruby
1
star
89

fireball

Go
1
star
90

qself-brandur

1
star
91

submodule-dud

1
star
92

archlinux-packages

My contributed PKGBUILDs for the Archlinux AUR.
1
star
93

millstone

1
star
94

neospring-bridge

Go
1
star
95

csrf

Go
1
star
96

wkunburn

Go
1
star
97

dummy

Empty repository.
1
star
98

wgt

A WGT-related playground.
Go
1
star
99

transaction-philosophy

HTML
1
star
100

tailwind-experimenting

CSS
1
star