Giter Club home page Giter Club logo

jsonref's Introduction

JSONref

Super experimental not-production-code

JSON encodes javascript object graphs with object references. This allows for circular references and saves a few bytes if a single object is referenced multiple times.

  var foo = {name: "foo"};

  var bar = {
    name: "bar",
    foo: foo
  };

  foo.bar = bar;
  
  var json = JSONref.stringify(foo);
  
  // Output:
  // {
  // 	"$id": 1,
  // 	"$type": "Object",
  // 	"name": "foo",
  // 	"bar": {
  // 		"$id": 2,
  // 		"$type": "Object",
  // 		"name": "bar",
  // 		"foo": {
  // 			"$ref": 1
  // 		}
  // 	}
  // }

More complex example which shows the use of javascript typed objects and some configurable properties of the library.

  function Foo() {
  }

  function Bizz() {
  }

  JSONref.idKey = "__id";
  JSONref.refKey = "__ref";
  JSONref.typeKey = "__type";

  (function () {
    var foo = new Foo();

    foo.name = "foo";

    var bar = {
      name: "bar",
      referencedFoo: foo
    };

    var bizz = new Bizz;

    bizz.name = "bizz";
    bizz.referencedFoo = foo;

    foo.referencedBar = bar;
    foo.referencedBizz = bizz;

    json = JSONref.stringify([bizz, [foo, bar], "blah"]);

    console.log(json);
  })();
  
  // Outputs:
  // [
  //   {
  //     "name": "bizz",
  //     "referencedFoo":
  //     {
  //       "name": "foo",
  //       "referencedBar":
  //       {
  //         "name": "bar",
  //         "referencedFoo":
  //         {
  //           "__ref": 2
  //         },
  //         "__id": 3,
  //         "__type": "Object"
  //       },
  //       "referencedBizz":
  //       {
  //         "__ref": 1
  //       },
  //       "__id": 2,
  //       "__type": "Foo"
  //     },
  //     "__id": 1,
  //     "__type": "Bizz"
  //   },
  //   [
  //     {
  //       "__ref": 2
  //     }, {
  //       "__ref": 3
  //     }
  //   ],
  //   "blah"
  // ]

jsonref's People

Contributors

stephenfrank avatar

Watchers

 avatar

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.