There are no reviews yet. Be the first to send feedback to the community and the maintainers!
********************************************************************** This is YAJL 2. For the legacy version of YAJL see https://github.com/lloyd/yajl/tree/1.x ********************************************************************** Welcome to Yet Another JSON Library (YAJL) ## Why does the world need another C library for parsing JSON? Good question. In a review of current C JSON parsing libraries I was unable to find one that satisfies my requirements. Those are, 0. written in C 1. portable 2. robust -- as close to "crash proof" as possible 3. data representation independent 4. fast 5. generates verbose, useful error messages including context of where the error occurs in the input text. 6. can parse JSON data off a stream, incrementally 7. simple to use 8. tiny Numbers 3, 5, 6, and 7 were particularly hard to find, and were what caused me to ultimately create YAJL. This document is a tour of some of the more important aspects of YAJL. ## YAJL is Free. Permissive licensing means you can use it in open source and commercial products alike without any fees. My request beyond the licensing is that if you find bugs drop me a email, or better yet, fork and fix. Porting YAJL should be trivial, the implementation is ANSI C. If you port to new systems I'd love to hear of it and integrate your patches. ## YAJL is data representation independent. BYODR! Many JSON libraries impose a structure based data representation on you. This is a benefit in some cases and a drawback in others. YAJL uses callbacks to remain agnostic of the in-memory representation. So if you wish to build up an in-memory representation, you may do so using YAJL, but you must bring the code that defines and populates the in memory structure. This also means that YAJL can be used by other (higher level) JSON libraries if so desired. ## YAJL supports stream parsing This means you do not need to hold the whole JSON representation in textual form in memory. This makes YAJL ideal for filtering projects, where you're converting YAJL from one form to another (i.e. XML). The included JSON pretty printer is an example of such a filter program. ## YAJL is fast Minimal memory copying is performed. YAJL, when possible, returns pointers into the client provided text (i.e. for strings that have no embedded escape chars, hopefully the common case). I've put a lot of effort into profiling and tuning performance, but I have ignored a couple possible performance improvements to keep the interface clean, small, and flexible. My hope is that YAJL will perform comparably to the fastest JSON parser out there. YAJL should impose both minimal CPU and memory requirements on your application. ## YAJL is tiny. Fat free. No whip. enjoy, Lloyd - July, 2007
node-memwatch
A NodeJS library to keep an eye on your memory usage, and discover and isolate leaks.JSONSelect
CSS-like selectors for JSONnode-toobusy
Build Node.JS servers that don't fall over.node-compute-cluster
NodeJS library for distributing computation across multiple processes.orderly
The reference implementation of orderly: a schema language for JSON.easylzma
An easy to use, tiny, public domain, C wrapper library around Igor Pavlov's work that can be used to compress and extract lzma files.myfavoritebeer.org
A demonstration of how to use BrowserID.connect-etagify
etagify is connect middleware to add ETag headers to cachable but non-static content.ircloggr
A system for producing web accessible IRC logs, in node.js.connect-select
Server side filtering of JSON responses using JSONSelectass
A node.js code coverage library which aggregates stats cross process.JSONSelectTests
Conformance tests for the JSONSelect selector languagepersona.js
Use Persona for authentication, the easy waynode-browserid
A nodejs library that verifies BrowserID assertions.wnram
urlparse.js
URL parsing in javascript with validation, normalization, and matching.fully_loaded_node
A presentation for http://node.ph which explores scaling CPU bound Node.JS services.docstract
Parses documentation out of javascript source and outputs JSON.awsbox-helloworld
A hello world application that demonstrates deploying on awsboxgoj
A fast JSON scanner in go.lloyd.io
lloyd's blog and websiteblobastorus
A happy little open source dinosaur that offers free itty bitty bits of json cloud storage for webby html5y apps.myfavoritebooze.org
Another example site that uses BrowserID.node-cpusage
CPU Sage is a NodeJS library that let's you query the current processes cpu usage.node.js-persona-example
A minimalist Persona Integration example in Node.JSyajl_vs_rapidjson
quick and dirty performance comparison of two json parsers.bakery
A ports system for software projects. Add software by adding "recipes". Build software by placing an "order".gobbledygook
A localization debugging tool that translates strings into legible gobbledygook. In javaScript.littlepass
(EXPERIMENT) Awesome machine generated passwords for little ones, worldwide?connect-browserid
nothing to see here.awsbox-socketio-example
An example of running websockets via socket.io on top of awsboxnotathing
a thing that's not a thing, and probably will never be a thing.node_leak
tracking down a memory leak in node?wtfpl
say less.popcornjs.org
a static clone of popcornjs.org that I can hack onmyfavoriteshow.org
An example site that uses BrowserID to let users sign up for a mailing list.scrapify
the thing that does the stuff!browserid-keysigner
mephitidae
throwdown
help, I can't stop creating github repositories!nice.js
lloyd.github.com
my pagerestwork
(EXPERIMENTAL) A minimalist framework for building awesome REST APIs in node.js servers.postMessagePerf
A little exploration of postMessage throughputleery
a thing that does some stuff, but not yet.mozhacks.org
A meta-hackphotovat
nothing to see here.dotPlan
lloyd's .plan. inspired by pfinette, in turn inspired by John Carmackchromeless-unplugged
wipjsga.me
there is nothing to see here.browserid_ncfs
nothing to see here.test_travis_ci
a test repo for broken IRC notifications to some servers in travis-ciconnect-postprocess
Experimental middleware for connect that helps intercept and mutate responses.crash-mozillians
a hacked up lil command line tool to help debug sasl-browserid. not really interesting.persona-preso
A presentation of persona for DenverJScloudwatch2statsd
a dirty hack, maybe general later.connect-minify
EXPERIMENTAL: lightweight connect middleware for automagic on-the fly combination and minification of resourcestestidp.org
i-am-a-dissenter
servedir
a trivial static webserver to serve a directorymehmeh
simulated_infobars
code experiment in simulating infobars in chrome extensionspersonatra.in
A simple web based calendar which helps people understand the phases of Persona "trains"prioritize.io
nothing to see here.Love Open Source and this site? Check out how you can help us