React JSON Viewer Component, Extracted from redux-devtools
npm install @alexkuz/react-json-treeReact JSON Viewer Component, Extracted from redux-devtools. Supports iterable objects, such as Immutable.js.

``jsnpm i --save immutable
import JSONTree from 'react-json-tree'
// If you're using Immutable.js:
import { Map } from 'immutable'
// Inside a React component:
const json = {
array: [1, 2, 3],
bool: true,
object: {
foo: 'bar'
}
immutable: Map({ key: 'value' })
}
`
#### Result:

Check out examples directory for more details.
You can pass a theme prop containing base16 theme data to change the theme. The example theme data can be found here.
(The theme data is also used by redux-devtools, and extracting it to a separate npm package is a TODO).
`js
const theme = {
scheme: 'monokai',
author: 'wimer hazenberg (http://www.monokai.nl)',
base00: '#272822',
base01: '#383830',
base02: '#49483e',
base03: '#75715e',
base04: '#a59f85',
base05: '#f8f8f2',
base06: '#f5f4f1',
base07: '#f9f8f5',
base08: '#f92672',
base09: '#fd971f',
base0A: '#f4bf75',
base0B: '#a6e22e',
base0C: '#a1efe4',
base0D: '#66d9ef',
base0E: '#ae81ff',
base0F: '#cc6633'
};
#### Result (Monokai theme, dark background):

$3
#### Customize CSS
You can pass the following properties to customize styling (all optional):
`js
({})}
getItemStringStyle={(type, expanded) => ({})}
getListStyle={(type, expanded) => ({})}
getLabelStyle={(type, expanded) => ({})}
getValueStyle={(type, expanded) => ({})} />
`Here
type is a string representing type of data, expanded is a current state for expandable items. Each function returns a style object, which extends corresponding default style.For example, if you pass the following function:
`js
const getStyle = (type, expanded) =>
(expanded ? { textTransform: 'uppercase' } :
{ textTransform: 'lowercase' });
`Then expanded nodes will all be in uppercase:

#### Customize Labels for Arrays, Objects, and Iterables
You can pass
getItemString to customize the way arrays, objects, and iterable nodes are displayed (optional).By default, it'll be:
`js
=> {itemType} {itemString}}
`But if you pass the following:
`js
const getItemString = (type, data, itemType, itemString)
=> ( // {type});
`Then the preview of child elements now look like this:

#### Customize Rendering
You can pass the following properties to customize rendered labels and values:
`js
labelRenderer={raw => {raw}}
valueRenderer={raw => {raw}}
/>
`In this example the label and value will be rendered with
and wrappers respectively.#### More Options
- Add
expandAll property to expand all nodes.
- Add hideRoot={true}` to hide a root node.- All credits to Dave Vedder (veddermatic@gmail.com), who wrote the original code as JSONViewer.
- Extracted from redux-devtools, which contained ES6 + inline style port of JSONViewer by Daniele Zannotti (dzannotti@me.com)
- Iterable support thanks to Daniel K.
- npm package created by Shu Uesugi (shu@chibicode.com) per this issue.
- react-treeview
- react-json-inspector
- react-object-inspector
MIT