[Libwebsockets] Lightweight JSON parser in C
ml at communistcode.co.uk
Fri Feb 22 16:53:13 CET 2013
On 22/02/13 15:28, "Andy Green (林安廸)" wrote:
> Hi -
> 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
> rummaging around.
> 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?
> Libwebsockets mailing list
> Libwebsockets at ml.libwebsockets.org
I have JSON parsing in my application and use the Jansson JSON Library
to parse and manage it. A lot of what you said went over my head so I'm
not sure if it would be applicable in my case, as I do a lot of parsing
of the JSON and I also reply to the recieve method in JSON which I
create on the fly.
If you want to poke into my use case then a few simple fairly specific
questions would probably be enough to coax some useful information out
of me ;)
Jack Mitchell (jack at embed.me.uk)
Embedded Systems Engineer
More information about the Libwebsockets