<div dir="ltr">I currently use libjson for my json parsing. I would be interested in a lightweight json parser. Would like to see it work though before i commit to using it.</div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, Feb 22, 2013 at 10:28 AM, "Andy Green (林安廸)" <span dir="ltr"><<a href="mailto:andy@warmcat.com" target="_blank">andy@warmcat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi -<br>
<br>
Is there any interest in a very lightweight but 100% correct JSON parser?<br>
<br>
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.<br>

<br>
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.<br>

<br>
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.<br>
<br>
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?<br>

<br>
-Andy<br>
______________________________<u></u>_________________<br>
Libwebsockets mailing list<br>
<a href="mailto:Libwebsockets@ml.libwebsockets.org" target="_blank">Libwebsockets@ml.<u></u>libwebsockets.org</a><br>
<a href="http://ml.libwebsockets.org/mailman/listinfo/libwebsockets" target="_blank">http://ml.libwebsockets.org/<u></u>mailman/listinfo/libwebsockets</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><span style="font-family:Tahoma;font-size:13px"><div style="text-indent:0px!important"><span style="text-indent:0px!important;font-family:Arial;border-collapse:collapse">--A programmer started to cuss<br style="text-indent:0px!important">
--Because getting to sleep was a fuss<br style="text-indent:0px!important">--As he lay there in bed<br style="text-indent:0px!important">--Looping 'round in his head<br style="text-indent:0px!important">--was: while( !asleep() ) sheep++;</span></div>
--Nothing is impossible! It is merely a matter of figuring out How?</span>
</div>