Coder Social home page Coder Social logo

json-view's Introduction

json-view

This is a javascript library for displaying json data into a DOM. link to demo

Installation

  npm install '@pgrabovets/json-view';

How to use

include jsonview.js from dist directory in your html page

 <script src="jsonview.js"></script>

or you can use import

  import jsonview from '@pgrabovets/json-view';

get json data and render tree into DOM

// get json data
const data = '{"name": "json-view","version": "1.0.0"}';

// create json tree object
const tree = jsonview.create(data);

// render tree into dom element
jsonview.render(tree, document.querySelector('.tree'));

// you can render json data without creating tree
const tree = jsonview.renderJSON(data, document.querySelector('.tree'));

control methods

// expand tree
jsonview.expand(tree);

// collapse tree
jsonview.collapse(tree);

// traverse tree object
jsonview.traverse(tree, function(node) {
  console.log(node);
});

// function toggles between show or hide
jsonview.toggleNode(tree);

// destroy and unmount json tree from the dom
jsonview.destroy(tree);

Example1

<!DOCTYPE html>
<html>
<head>
  <title>JSON VIEW</title>
</head>
<body>
  <div class="root"></div>

  <script type="text/javascript" src="jsonview.js"></script>
  <script type="text/javascript">
    fetch('example2.json')
    .then((res)=> {
      return res.text();
    })
    .then((data) => {
      const tree = jsonview.create(data);
      jsonview.render(tree, document.querySelector('.root'));
      jsonview.expand(tree);
    })
    .catch((err) => {
      console.log(err);
    })
  </script>
</body>
</html>

Example2

import jsonview from '@pgrabovets/json-view';

fetch('example2.json')
.then((res)=> {
  return res.text();
})
.then((data) => {
  const tree = jsonview.create(data);
  jsonview.render(tree, document.querySelector('.root'));
  jsonview.expand(tree);
})
.catch((err) => {
  console.log(err);
})

For development install dependencies and run scripts

$ npm install

$ npm run serve
$ npm run build

open http://localhost:3000/

json-view's People

Contributors

diogo464 avatar kofifus avatar pgrabovets avatar shivasaxena avatar splenectomy avatar therealkerel 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  avatar

json-view's Issues

Empty object render fix is broken

The fix for #11 implemented in #12 does not work correctly:

jsonview.js:1 Uncaught TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at C (jsonview.js:1:6656)
    at I (jsonview.js:1:6905)
    at I (jsonview.js:1:6984)
    at I (jsonview.js:1:6984)
    at I (jsonview.js:1:6984)
    at I (jsonview.js:1:6984)
    at I (jsonview.js:1:6984)
    at Module.S (jsonview.js:1:7118)
    at Object.success (data.js:71:24)

if (typeof value == 'object' && Object.keys(value).length == 0) {

typeof null == 'object' is true โ€” meaning Object.keys(null) is called and immediately throws the above error. null does not have its own type like undefined does.

Complex structures are not handled

When trying to render a complex structure, with an object inside another object, it does not parse the inner one:

image

In the example, openParams is another structure... it gets presented as an ugly [object]

How to not render html

I'd like to use your tool with some json files containing html code. But I'd like to see the code as code rather than rendered html. Is this currently possible ?

Feature Request: Add filtering to the output

Lets say I have an array of elements, each element has some data I want to search for, an example Order #

If I type 12345 into a filter box it could find the value 12345 in many places and that would be find, but in those items where is was found it would limit the displayed data to only those elements and their children. So if I had 10 orders and array[3] had an order number of 12345, the resultant display would be for the array[3] item.

Maybe even highlight the found match as well?

include all.css in readme

as seen in the example, in order to get the arrows etc you need

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">

It would be good to add this to the readme

Thanks!

Expand Root Object

Hello,
Is it possible to expand just the root dictionary or array and have all other sub levels closed?

Question about support for big numbers

Hello,
after quick check json-view dos not support display of big numbers right now - the values are changed and wrong data show (problem of javascript runtime itself and JSON.parse()). Do you plan to support big numbers or willing to accept pull request to add support?

Whats not working: { "pi":66110734225681139 }
Will be changed to: { "pi":66110734225681140 }

Currently we are using another library to display formatted json (jquery.json-viewer) but the development of this library seems to has stopped and my pull request to support big numbers is not answered.

Before starting to rewrite our app i'd like to ask if this is a welcome addition or not?

Write to readonly property

Hi,

I've found a problem when using json-view with Safari 10.0 on iPad (IOS 10.3)
You can't write directly on style property in createNodeElement() method.
It cause an "Attempted to assign to readonly property" error

I've solved the problem by replacing following line :
lineEl.style = 'margin-left: ' + node.depth * 18 + 'px;';
by
lineEl.setAttribute("style", 'margin-left: ' + node.depth * 18 + 'px;');

It work fine now on Opera.

CDN link ?

Hi,
I used the Jjsonviewer but it does not work in bootstrap modal
so I want to try jsonview.bundle.js
I use to work with CDN . Have you got a link to a CDN for your project ?

thanks you in advance

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.