Jsmn is a fresh (somewhat copout) approach, but unless you know the size of your JSON a priori (ie memory mapped file), I would hard call it beautiful or without global side effects.
If you're into C++, take a look at benejson's pull parser. There is a C core but its presently very ugly and only intended for library, not application developers.