Implements JSON Schema, JSON Pointer and JSON Reference.
Project description
This library implements several JSON specs, like JSON Schema, JSON Reference and JSON Pointer:
It works on python 3.6 and above
It is release under the BSD license
Installation
This library has only weak dependencies. You can simply use pip:
$ pip install json-spec
Regading you needs, you can install more features. For example, this command will enable colorated messages:
$ pip install json-spec[cli]
This one will enable ip format for json schema:
$ pip install json-spec[ip]
…
CLI Usage
This module expose a cli command with multiple operations.
json add will transform the json document:
$ json add '#/foo/1' --fragment-file=fragment.json --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json add '#/foo/1' --fragment-json='first' $ json add '#/foo/1' --fragment-file=fragment.json --document-file=doc.json $ json add '#/foo/1' --fragment-file=fragment.json < doc.json
json check will test that a value at the target location is equal to a specified value:
$ json check '#/foo/1' --fragment-file=fragment.json --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json check '#/foo/1' --fragment-file=fragment.json $ json check '#/foo/1' --fragment-file=fragment.json --document-file=doc.json $ json check '#/foo/1' --fragment-file=fragment.json < doc.json
json copy will copy the value at a specified location to the target location:
$ json copy '#/foo/1' --target='#/foo/2' --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json copy '#/foo/1' --target='#/foo/2' $ json copy '#/foo/1' --target='#/foo/2' --document-file=doc.json $ json copy '#/foo/1' --target='#/foo/2' < doc.json
json extract will extract parts of your json document:
$ json extract '#/foo/1' --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json extract '#/foo/1' $ json extract '#/foo/1' --document-file=doc.json $ json extract '#/foo/1' < doc.json
json move will remove the value at a specified location and it will add the value to the target location:
$ json move '#/foo/2' --target='#/foo/1' --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json move '#/foo/2' --target='#/foo/1' $ json move '#/foo/2' --target='#/foo/1' --document-file=doc.json $ json move '#/foo/2' --target='#/foo/1' < doc.json
json remove will remove the value at a specified location:
$ json remove '#/foo/1' --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json remove '#/foo/1' $ json remove '#/foo/1' --document-file=doc.json $ json remove '#/foo/1' < doc.json
json replace will replace the value at a specified location with given fragment:
$ json replace '#/foo/1' --fragment-file=fragment.json --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json replace '#/foo/1' --fragment-file=fragment.json $ json replace '#/foo/1' --fragment-file=fragment.json --document-file=doc.json $ json replace '#/foo/1' --fragment-file=fragment.json < doc.json
json validate will validate your document against a schema:
$ json validate --schema-file=schema.json --document-json='{"foo": ["bar", "baz"]}' $ echo '{"foo": ["bar", "baz"]}' | json validate --schema-file=schema.json $ json validate --schema-file=schema.json --document-file=doc.json $ json validate --schema-file=schema.json < doc.json
Library usage
Let say you want to fetch / validate JSON like objects in you python scripts.
You can extract member of an object with JSON Pointer:
from jsonspec.pointer import extract obj = { 'foo': ['bar', 'baz', 'quux'] } assert 'baz' == extract(obj, '/foo/1')
You can resolve member of any object with JSON Reference:
from jsonspec.reference import resolve obj = { 'foo': ['bar', 'baz', { '$ref': '#/sub' }], 'sub': 'quux' } assert 'quux' == resolve(obj, '#/foo/2')
You can describe you data with JSON Schema:
from jsonspec.validators import load # data will validate against this schema validator = load({ 'title': 'Example Schema', 'type': 'object', 'properties': { 'age': { 'description': 'Age in years', 'minimum': 0, 'type': 'integer' }, 'firstName': { 'type': 'string' }, 'lastName': { 'type': 'string' } }, 'required': [ 'firstName', 'lastName' ] }) # validate this data validator.validate({ 'firstName': 'John', 'lastName': 'Noone', 'age': 33, })
Other examples can be found in the documentation or in the tests.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for json_spec-0.12.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5096695f1ed4d2bf70b04bee792615cc36f8f830f5a5a2255fc43731e4deba1e |
|
MD5 | bc67127ba951d8385fba17bd98f93db1 |
|
BLAKE2b-256 | c07c31574832b5269f7a9385cec3b9b19d0a535f5ace075446ca9cbb240868bc |