Git Product home page Git Product logo

fixjson's Introduction

JSON fixer for Humans

npm version ci-badge

fixjson is a JSON file fixer/formatter for humans using (relaxed) JSON5.

fixjson provides:

  • Pretty-printing JSON5 input
    • ES5 syntax is available to write up JSON
  • Fixes various failures while humans writing JSON
    • Fixes trailing commas objects or arrays
    • Fixes missing commas for elements of objects or arrays
    • Adds quotes to keys in objects
    • Newlines in strings
    • Hex numbers
    • Fixes single quotes to double quotes

fixjson reads an input in relaxed JSON5 format and outputs it in JSON format. Indent width is automatically detected.

This CLI tool aims to be used with editor extensions.

Screenshots of Fixes

When moving a line to another line, you no longer need to care about a trailing comma:

modify keys

And you also don't need to care about a trailing comma of a previous line when adding a new element to an object or an array:

add key

When adding a new key-value to an object, quotes of the key are fixed. And single quotes for strings are also fixed to double quotes:

key quotes

JSON string does not allow multi-line string. \n is required to embed multi-line string to JSON. fixjson automatically fixes newlines in strings. This is useful when copy&paste some string to JSON file:

newlines in string

JSON only accepts decimal digits for numbers. fixjson automatically converts 0x hex numbers to decimal numbers. You no longer need to convert hex numbers manually:

hex numbebr

And of course it pretty-prints the JSON code, with automatic indent detection:

pretty printing

Installation

$ npm install -g fixjson

It installs fixjson command globally.

Usage

fixjson [--write|--indent|--minify|--stdin-filename] [paths...]

If paths are given, glob such as dir/**/*.json is available. If the path is a directory, it formats all JSON files in the directory. If no path is given, it reads from STDIN.

If --write (or -w) option is provided, it overwrites files.

If --indent {num} (or -i {num}) is not provided, it detects indent spaces.

Please see fixjson --help for more details.

License

Distributed under the MIT License. Please see LICENSE.

fixjson's People

Contributors

dependabot[bot] avatar rhysd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fixjson's Issues

Feature Suggestion: JSON Lines support

It would be a nice bonus feature to be able to fix JSON Lines syntax, if a parameter is provided to switch to a jsonl mode. The added benefit would be being able to take lines of objects from a .json file, copy and paste them into a .jsonl file, remove the outer [ ] surrounding the objects after squishing the data into a single line each, and then having fixjson remove trailing commas where it should. I'm experiencing this need right now as I'm taking data out of a GET REST API response and quickly copy and paste a few lines to POST to another place.

If implemented, I'd add an ALE fixer for running this with the right arguments, plus some default detection of the .jsonl filetype.

High Level Suggested Implementation

In a --jsonl mode, read data from a file a single line at a time, and apply existing fixes to JSON to each line as if it were itself a file, but wrap the fixed output into one compact line. I don't believe we need to do anything to make the output pretty for JSON Lines.

Argument list too long

Is it possible to add something like a queue to prevent the Argument list too long error?
Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.