Skip to main content

Provides JSON tools:

  • jschon-sort sorts a JSON or YAML document according to its JSON Schema: object properties are ordered to match the order in which JSON Schema properties (that match them) are declared.

  • jschon-remove-additional-props removes properties not defined in the JSON Schema.

The "jschon" name relates to it being based on the jschon library for JSON Schema handling.

Motivation

Per the JSON RFC, an object is an unordered collection. In practice, within serialized JSON or YAML files, a particular order of properties can benefit readability: for example, {"start": 10, "end": 20} read more naturally than naive lexicographic order of {"end": 20, "start": 10} (that would result from json.dumps(..., sort_keys=True)). While there are several attempts to introduce property ordering into JSON Schema, here we're taking a different approach. By leveraging the fact that the JSON Schema itself is written with human maintainers in mind, we can extrapolate the intuitive order from the JSON Schema definitions' ordering and apply it on the document itself.

Usage

Shell:

jschon-sort --schema ../schema.json file.yaml

API:

import jschon
import jschon_tools

jschon.create_catalog('2020-12')
...
sorted_doc_data = jschon_tools.process_json_doc(
    schema_data=schema_data,
    doc_data=doc_data,
    sort=True,
)

Example

Given schema:

{
  "type": "object",
  "properties": {
    "range": {
      "type": "object",
      "properties": {
        "start": {"type": "number"},
        "end": {"type": "number"}
      }
    }
  }
}

the following document:

{"range": {"end": 20, "start": 10}}

would be reordered as:

{"range": {"start": 20, "end": 10}}

Release files for jschon-sort 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jschon-sort 0.2.0
File Size Uploaded
jschon-sort-0.2.0.tar.gz 5.6 kB Details

Release files / jschon-sort-0.2.0.tar.gz

Download URL jschon-sort-0.2.0.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
00794b5ecf01d15cc37cf1e72d305354ac8107ca6016fe8b7786e4d4055ac7ca
BLAKE2b-256 checksum
How to use checksums
82b0afff8e9c96afd9135223e7518423f92b244b01c0e27bd658dc36f0611328
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.0

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page