A web-based tool to view, edit, format, and validate JSON
Go to file
snyk-bot 3b7101ebbe
fix: upgrade multiple dependencies with Snyk
Snyk has created this PR to upgrade:
  - react from 16.13.1 to 16.14.0.
    See this package in npm: https://www.npmjs.com/package/react
  - react-dom from 16.13.1 to 16.14.0.
    See this package in npm: https://www.npmjs.com/package/react-dom

See this project in Snyk:
https://app.snyk.io/org/josdejong/project/913c7924-24ae-4f86-8a9b-91da27c3e8f1?utm_source=github&utm_medium=upgrade-pr
2020-10-16 06:18:39 +00:00
.github Add Funding.yml to project 2019-11-16 14:56:04 +01:00
docs Defined charset="utf-8" and lang="en" in all examples 2020-09-23 10:23:38 +02:00
examples fix: upgrade multiple dependencies with Snyk 2020-10-16 06:18:39 +00:00
misc Publish v5.27.1 2019-01-16 15:59:11 +01:00
src Fix lint error 2020-09-23 15:49:44 +02:00
test Defined charset="utf-8" and lang="en" in all examples 2020-09-23 10:23:38 +02:00
.babelrc Partial refactor to ES modules 2019-08-29 17:03:09 +02:00
.gitignore Drop bower support, remove `dist` folder from repo 2019-08-28 11:34:41 +02:00
.npmignore Don't package CONTRIBUTING.md or examples folder (#579) 2018-09-18 19:53:57 +02:00
.travis.yml Fix travis config (test + lint) 2019-08-28 13:23:33 +02:00
CONTRIBUTING.md Set up code style linting with standardjs 2019-08-28 13:21:14 +02:00
HISTORY.md Log a clear error in the console when the returned value of `onEditable` is invalid. See #1112 2020-09-23 15:44:04 +02:00
LICENSE first commit 2012-04-21 13:28:28 +02:00
NOTICE Publish `v8.1.2` 2020-01-06 20:01:54 +01:00
README.md Defined charset="utf-8" and lang="en" in all examples 2020-09-23 10:23:38 +02:00
greenkeeper.json Update dependencies to enable Greenkeeper 🌴 (#718) 2019-06-22 20:37:09 +02:00
gulpfile.js Fix #858: the `dist/jsoneditor.js` bundle containing a link to a non-existing source map 2020-05-10 11:46:11 +02:00
index.js Fixed `index.js` pointing to non-transpiled code. See #783 2019-09-04 09:42:40 +02:00
package-lock.json Bump uglify-js from 3.10.4 to 3.11.1 (#1123) 2020-10-07 09:56:16 +02:00
package.json Bump uglify-js from 3.10.4 to 3.11.1 (#1123) 2020-10-07 09:56:16 +02:00

README.md

JSON Editor

Version Downloads Maintenance License FOSSA Status

JSON Editor is a web-based tool to view, edit, format, and validate JSON. It has various modes such as a tree editor, a code editor, and a plain text editor.

The editor can be used as a component in your own web application. The library can be loaded as CommonJS module, AMD module, or as a regular javascript file.

Supported browsers: Chrome, Firefox, Safari, Opera, Edge, Internet Explorer 11.

json editor   code editor

Cross browser testing for JSONEditor is generously provided by BrowserStack

BrowserStack

Features

JSONEditor has various modes, with the following features.

Tree mode

  • Change, add, move, remove, and duplicate fields and values.
  • Sort arrays and objects.
  • Transform JSON using JMESPath queries.
  • Colorized code.
  • Color picker.
  • Search & highlight text in the tree view.
  • Undo and redo all actions.
  • JSON schema validation (powered by ajv).

Code mode

  • Colorized code (powered by Ace).
  • Inspect JSON (powered by Ace).
  • Format and compact JSON.
  • Repair JSON.
  • JSON schema validation (powered by ajv).

Text mode

  • Format and compact JSON.
  • Repair JSON.
  • JSON schema validation (powered by ajv).

Preview mode

  • Handle large JSON documents up to 500 MiB.
  • Transform JSON using JMESPath queries.
  • Format and compact JSON.
  • Repair JSON.
  • JSON schema validation (powered by ajv).

Documentation

Install

with npm (recommended):

npm install jsoneditor

Note that to use JSONEditor in Internet Explorer 11, it is necessary to load a polyfill for Promise in your application.

Use

<!DOCTYPE HTML>
<html lang="en">
<head>
    <!-- when using the mode "code", it's important to specify charset utf-8 -->
    <meta charset="utf-8">

    <link href="jsoneditor/dist/jsoneditor.min.css" rel="stylesheet" type="text/css">
    <script src="jsoneditor/dist/jsoneditor.min.js"></script>
</head>
<body>
    <div id="jsoneditor" style="width: 400px; height: 400px;"></div>

    <script>
        // create the editor
        const container = document.getElementById("jsoneditor")
        const options = {}
        const editor = new JSONEditor(container, options)

        // set json
        const initialJson = {
            "Array": [1, 2, 3],
            "Boolean": true,
            "Null": null,
            "Number": 123,
            "Object": {"a": "b", "c": "d"},
            "String": "Hello World"
        }
        editor.set(initialJson)

        // get json
        const updatedJson = editor.get()
    </script>
</body>
</html>

Build

The code of the JSON Editor is located in the folder ./src. To build jsoneditor:

  • Install dependencies:

    npm install
    
  • Build JSON Editor:

    npm run build
    

    This will generate the files ./jsoneditor.js, ./jsoneditor.css, and
    minified versions in the dist of the project.

  • To automatically build when a source file has changed:

    npm start
    

    This will update ./jsoneditor.js and ./jsoneditor.css in the dist folder on every change, but it will NOT update the minified versions as that's an expensive operation.

Test

Run unit tests:

npm test

Run code linting (JavaScript Standard Style):

npm run lint

Custom builds

The source code of JSONEditor consists of CommonJS modules. JSONEditor can be bundled in a customized way using a module bundler like browserify or webpack. First, install all dependencies of jsoneditor:

npm install

To create a custom bundle of the source code using browserify:

browserify ./index.js -o ./jsoneditor.custom.js -s JSONEditor

The Ace editor, used in mode code, accounts for about one third of the total size of the library. To exclude the Ace editor from the bundle:

browserify ./index.js -o ./jsoneditor.custom.js -s JSONEditor -x brace -x brace/mode/json -x brace/ext/searchbox

To minify the generated bundle, use uglifyjs:

uglifyjs ./jsoneditor.custom.js -o ./jsoneditor.custom.min.js -m -c