Skip to main content

Copyright (c) 2016-2018 Fabien Fleutot.

This software is made available under the MIT public license.

(Kind-of) smart JSON formatter.

Every JSON formatter I've found inserts newline + indent at every list item and every object pair. As a result, instead of being unreadable because it's too large (in a single line), the resulting JSON is unreadable because too tall (too many newlines), especially when dealing with formats like GeoJSON where long lists of coordinates are handled.

This formatter works with a page width in mind, by default 80, and tries to optimize screen space usage in both width and height.

Installation

pip install jsview

Usage

jsview.py [-h] [-w WIDTH] [-i INDENT] [-o OUTPUT] [-l] [-u] [-r] filename

Format JSON inputs with smart line-returns and indendation.

positional arguments:
  filename              Input file; use '-' to read from stdin

optional arguments:
  -h, --help            show this help message and exit
  -w WIDTH, --width WIDTH
                        Set the ideal width of the output text; if unspecified,
                        try to fit the terminal's width as returned by stty.
  -i INDENT, --indent INDENT
                        Indentation, in number of space characters; default=2
  -o OUTPUT, --output OUTPUT
                        Output file; defaults to stdout
  -l, --close-on-same-line
                        When set, further lines are saved by closing lists and
                        objects on the same line as the last element.
  -u, --utf8-output     Output strings as UTF8 rather than ASCII 7 bits
  -r, --reformat        When set, file content is replaced by a reformatted
                        version. File must not be '-'.

Example

Below is the result of formatting a non-trivial JSON input to 80 characters wide:

{
  "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG::4326"}},
  "totalFeatures": 116570,
  "type": "FeatureCollection",
  "features": [
    {
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [[-3.59, 48.28], [-3.57, 48.28], [-3.54, 48.28], [-3.53, 48.26],
            [-3.51, 48.25], [-3.49, 48.24], [-3.47, 48.22], [-3.48, 48.21],
            [-3.5, 48.2], [-3.5, 48.18], [-3.48, 48.17], [-3.49, 48.15],
            [-3.52, 48.15], [-3.53, 48.14], [-3.56, 48.14], [-3.58, 48.14],
            [-3.59, 48.15], [-3.58, 48.17], [-3.58, 48.19], [-3.57, 48.21],
            [-3.57, 48.23], [-3.58, 48.25], [-3.6, 48.26], [-3.59, 48.28],
            [-3.59, 48.28]]]
      },
      "properties": {
        "lastrevision": "2016-02-17T15:40:00Z",
        "probability": 0,
        "convectiontype": "ASPOC3D",
        "directiontowards": 90.06896,
        "top": 310,
        "phasetype": null,
        "convectioncelltopvariation": "CONSTANT",
        "intensity": "LIGHT",
        "base": 0,
        "identifier": "OPIC_RADAR.1.201602171540000060_310",
        "speed": 9.1,
        "obsorfcsttime": "2016-02-17T16:40:00Z"
      },
      "type": "Feature",
      "id": "convectionAirm.3449590",
      "geometry_name": "extent"
    }
  ]
}

Release files for jsview 1.2

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

Source distribution (sdist)

Source distribution for jsview 1.2
File Size Uploaded
jsview-1.2.tar.gz 6.7 kB Details

Release files / jsview-1.2.tar.gz

Download URL jsview-1.2.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
910af54247e292f7259f8cfb6414a8f8a4078eef72011f4e215fddd452c2801e
BLAKE2b-256 checksum
How to use checksums
a84b2405f739da09b42b53d4e290e1295c1a0b72a3522b3b6a6093239a57455b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.21.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.0

Release history Release notifications | RSS feed

This release

1.2 This release

1 release file

1.1

1 release file

1.0

2 release files

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