
Just for the sake of chiming-in, I'd also be very interested in JSON support archive support. I haven't reviewed the available options in great detail yet.. I know there are several C & C++ libraries available, but I've been leaning towards using the YAJL one b/c it looks very clean, simple and is SAX-based: http://lloydforge.org/projects/yajl/ -Mike On Mar 20, 2008, at 5:35 PM, Robin Redeker wrote:
Hello Esteve!
On Thu, Mar 20, 2008 at 10:10:07PM +0100, Esteve Fernandez wrote:
- the JSON spec is quite simple, but given that it's a subset of YAML (actually Syck parses JSON as well), should it support it in the future as well?
Actually JSON is not really a subset of YAML, see also the documentation of the Perl module of Marc Lehmann, who wrote a fully standards compliant JSON parser in (C, bound to Perl):
http://search.cpan.org/~mlehmann/JSON-XS-2.1/XS.pm
Look at the comparsion in the section 'YAML and JSON'.
- what about Unicode? I know that Boost.Regex supports Unicode if compiled against ICU and the JSON spec states that everything must be in Unicode (correct me if I'm wrong)
Yes, the JSON spec states that JSON is Unicode text, encoded in (any) Unicode encoding (usually UTF-8). However, there is one hard part when writing a JSON parser, you have to take care to handle the \uXXXX literals in strings correctly. The JSON spec (RFC 4627, http://www.ietf.org/rfc/rfc4627.txt ) states in section 2.5:
To escape an extended character that is not in the Basic Multilingual Plane, the character is represented as a twelve-character sequence, encoding the UTF-16 surrogate pair. So, for example, a string containing only the G clef character (U+1D11E) may be represented as "\uD834\uDD1E".
So care must be taken not to overlook this small detail.
- TinyJSON and JSON.Spirit both use a MIT-like license (JSON.Spirit is licensed under CPOL). The Boost license is compatible with them but, could it pose a problem? There's JSONcpp [1] as well, which is public domain.
I wrote a JSON parser in C++, which I didn't release yet, which should be almost 100% compliant with the JSON RFC. However, I defined my own bytebuffer class with special UTF-8 handling, as I only have to deal with UTF-8 in my problem domain.
But I could release the code under the boost license anytime if someone is interested. But I guess for Boost inclusion there still has to be done some work.
Greetings, Robin Redeker
-- Robin Redeker | Deliantra, the free code +content MORPG elmex@ta-sa.org / r.redeker@gmail.com | http://www.deliantra.net http://www.ta-sa.org/ | _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost