Universal Json
==============

JSON is a nice, well-defined data format and it's a real shame that
libraries handling it are so hideously complicated. Further, they (at
least the C libraries I looked at) all suffer from the same design
flaws, namely,

	- they implement some scheme for memory management despite
          they shouldn't

	- they define some sort of data representation for their
          output despite they shouldn't

This is meant to become a small library for parsing JSON text and
formatting some complex object as JSON text with a C core which
delegates anything which requires memory allocation and/ or a data
representation to "someone else" and which can thus be used together
with any other programming language which can interoperate with
compiled C code.

The code is meant to be simple and fast, in that order. It should
rather be easy enough to understand so that one can be reasonably
confident that it actually works than try to shave off every
nanosecond which could conceivably be saved somewhere. In particular,
this means it'll use lookup tables of function pointers instead of
explicit switching logic and employ functional decomposition to break
the task down into semantic units which make sense in the problem
domain. Further, it's to utilize recursive descent for handling nested
structures instead of employing some complicated, explicit stack
management scheme to "avoid recursion."


Features
========

Believed-to-be-complete parser and serializer core written in C.

`make` produces `bin/libuni-json.a` for static linking into a C
project, and shared objects under `bin/`. Run `make install` to install
libraries and headers under the prefix set in the PREFIX file
(default `/usr/local`), honoring DESTDIR when set.

This software is under the MIT license (see LICENSE). If you embed or
redistribute it, keep the copyright and permission notice as required
by that license.

-- Rainer Weikusat <rweikusat@talktalk.net>
