It's no different in the case of JSON, except that there are oodles of JSON parsers out there.
C doesn't natively support associative arrays, so a C JSON parser is pointless without the ability to store the data. You'd have to settle for a non nesting parser, which is the equivalent of about 30 lines of basic code for MSDP which most people are capable of writing, from what I gathered 5 people already have.
My personal favorite JSON parser is Jansson: http://www.digip.org/jansson/doc/2.2/ . I've used it and it has a very clean API, and yes, it supports associative arrays. It parses JSON data and presents them to you as data structures, so it's more like DOM than SAX, for example. And recent versions added json_unpack(), so you can make a call like json_unpack(myObject, "{s:s, s:o}", "type", &type, "data", &data) to extract values quickly.
There's also YAJL if you prefer a more SAX-like event stream: http://lloyd.github.com/yajl/ . I imagine it's more like a typical MSDP parser because you process each value as it's parsed, rather than via an in-memory data representation, but I've never actually seen an MSDP parser.
I think whether or not C has a native associative array implementation is irrelevant. There's ways to make mappings using primitives that act as associative arrays. And that's just what these (many) C json parsers do.
There's also YAJL if you prefer a more SAX-like event stream: http://lloyd.github.com/yajl/ . I imagine it's more like a typical MSDP parser because you process each value as it's parsed, rather than via an in-memory data representation, but I've never actually seen an MSDP parser.
The two server side MSDP snippets and KaVir's MC plugin process the data as it's parsed, TinTin++ offers an in-memory data representation. In-memory is definitely the way to go for clients.
Here is a working example for cmud with msdp, it works on our test port currently, as we are still working out some issues before moving MSDP to the live port. It only handles straight variables right not, not tables but its a good start, creates a couple of gauges and what not. Hopefully somebody can figure out the parsing of the tables…
In order to use this script for cmud: 1) open up file 2) import xml
C doesn't natively support associative arrays, so a C JSON parser is pointless without the ability to store the data. You'd have to settle for a non nesting parser, which is the equivalent of about 30 lines of basic code for MSDP which most people are capable of writing, from what I gathered 5 people already have.