Skip to content
Simple and non-recursive JSON parse/stringify library
Branch: master
Clone or download
Latest commit 0d33a0a Jun 4, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist
test
.gitignore
.jshintrc
.travis.yml
LICENSE
README.md
index.js
package.json
vuvuzela.jpg

README.md

vuvuzela Build Status

Simple and non-recursive JSON parse/stringify library.

Goals

  • No recursion
    • Avoids the "too much recursion" or "maximum call stack" errors that the native JSON.parse and JSON.stringify methods may throw if an object is deeply nested.
  • Simplicity
    • No functions-within-functions, just a while loop and a stack.
  • Small footprint
    • ~1 KB minified and gzipped

Description

vuvuzela, courtesy of Berndt Meyer via the Wikipedia page

The vuvuzela is a coarse instrument, but it's lightweight, and it gets the job done.

This module will use up tons of memory, but unlike the native JSON methods or json3, it'll never throw a "maximum call stack size exceeded" exception. Your JSON objects can be as deeply nested as you like.

This is not a streaming library, so unlike oboe/clarinet, it reads the whole thing into memory at once. It's also quite a bit slower than the native JSON methods, although by some measures, it's faster than other JavaScript-based JSON parsers.

Usage

$ npm install vuvuzela
var vuvuzela = require('vuvuzela')

var asString = vuvuzela.stringify({hello: 'world'}); // '{"hello":"world"}'

var asJson = vuvuzela.parse('{"hello": "world"}'); // {hello: 'world'}

Browser builds are available in the dist/ folder. They'll create a window.vuvuzela object you can use.

Limitations

At the top level, it will currently only parse objects and arrays, not arbitrary values like booleans, strings, numbers, and null.

Testing

Unit tests:

$ npm test

Coverage tests:

$ npm run coverage

Building

$ npm run build
You can’t perform that action at this time.