[Libwebsockets] Lightweight JSON parser in C
"Andy Green (林安廸)"
andy at warmcat.com
Fri Feb 22 16:28:31 CET 2013
Is there any interest in a very lightweight but 100% correct JSON parser?
I don't mean like you have in a browser where it goes through and spawns
objects for everything in the JSON. The idea is it is basically a
stateful stream reader, which can do something when the object path it
is on top of matches what you're interested in.
It does not recurse, nor malloc anything. You call it with cursor
structs which start off zero'd and hold all parsing state. The cursor
structs have no pointers and may be copied. You can call the multiple
times with the same cursor as new JSON pieces come in and it will parse
on from the previous state; it's a bytewise parser so there are no
fragmentation issues. It means you don't need to hold the JSON all at
once anywhere but can still parse the whole JSON.
So the style would be parse until the node of interest is held in the
cursor struct, then you can use a copy of that as a starting point for
I have the parser working - it is very lightweight, the cursor struct is
the only storage and it's < 256 bytes - but I am a bit stumped about how
to most flexibly expose the wanted results. I know what I want it for
and can hack that up easily, but I am wondering if there are other
real-world uses for very cheap JSON parsing in C... if so, what does the
JSON look like and what are the operations needed on it?
More information about the Libwebsockets