A JSON reader and writer which is super-effiecient and usually runs circles around other JSON libraries. It's highly customizable to optimize for your particular project, and very lightweight. For Windows, OSX, or Linux. Works in any language.
- Lazy or aggressive JSON Parsing
- 100% JSON compliant
- Language independent C interface
- C++ interface
- Test Suite and Example Projects
- C and Bash style comment support
- Automated install via make
- cplusplus.com - style documentation
- Streaming ability
- Security to prevent various forms of Denial of Service
MacOS required some corrections and changes. Line 2 of GNU_C.h fixed misspelling of _GUN_ to _GNU_. From within _internal/Sources directory: ln -s ../Dependencies. make; sudo make install Expect warnings: clang: warning: optimization flag '-fexpensive-optimizations' is not supported clang: warning: argument unused during compilation: '-fast' clang: warning: argument unused during compilation: '-fexpensive-optimizations' g++ -o $@ $< -ljson It all compiles, links, and installs. I have not yet tested it extensively, thus the lack of optional rating.
Works as advertised, easy to use.
Be careful when you are up to choose this libjson. 1. If you need to handle Unicode ( why not. You have to for handling Twitter & Facebook response. ), make sure that your host app uses GNU C++ standard not strict ANSI C++ standard. if using strict ANSI C++ standard, Unicode support in this library should be turned off. Then it can't handle Unicode escape sequence like \uXXXX. At least it should return \uXXXX if it can't handle the Unicode. As some people pointed out, wouldn't it be better to conver it to UTF-8? Unicode escape sequence is not UTF-8. If Unicode option is off, it will return chopped string at \u. (returns only up to \. eg. "This is \uAC00" yields "This \". 2. Documentation is not clear if it's SOX style or DOM parser style. It turned out that it handles the both, which is good. More accurately speaking, you can achieve SOX-like on by using its iterator. 3. Its build option is also expected to be specified in a header file, JSONOptions.h, which can introduce some odd situation when using this library in your host project.
I had to make a change to the make file because of a "No such file or directory". After the change, it worked like a charm. The change is in the install_headers: banner section. cp -rv ./$(srcdir)/Dependencies/ $(include_path)/$(libname_hdr)/$(srcdir) was changed to cp -rv ./$(srcdir)/../Dependencies/ $(include_path)/$(libname_hdr)/$(srcdir)
Thanks for Libjson, it's good!