2 changed files with 117 additions and 0 deletions
@ -0,0 +1,20 @@
|
||||
All contributors arranged by first commit: |
||||
|
||||
James McLaughlin |
||||
Alex Gartrell |
||||
Peter Scott |
||||
Mathias Kaerlev |
||||
Emiel Mols |
||||
Czarek Tomczak |
||||
Nicholas Braden |
||||
Ivan Kozub |
||||
Árpád Goretity |
||||
Igor Gnatenko |
||||
Haïkel Guémar |
||||
Tobias Waldekranz |
||||
Patrick Donnelly |
||||
Wilmer van der Gaast |
||||
Jin Wei |
||||
François Cartegnie |
||||
Matthijs Boelstra |
||||
|
||||
@ -0,0 +1,97 @@
|
||||
Very low footprint JSON parser written in portable ANSI C. |
||||
|
||||
* BSD licensed with no dependencies (i.e. just drop the C file into your project) |
||||
* Never recurses or allocates more memory than it needs |
||||
* Very simple API with operator sugar for C++ |
||||
|
||||
[](http://travis-ci.org/udp/json-parser) |
||||
|
||||
_Want to serialize? Check out [json-builder](https://github.com/udp/json-builder)!_ |
||||
|
||||
Installing |
||||
---------- |
||||
|
||||
There is now a makefile which will produce a libjsonparser static and dynamic library. However, this |
||||
is _not_ required to build json-parser, and the source files (`json.c` and `json.h`) should be happy |
||||
in any build system you already have in place. |
||||
|
||||
|
||||
API |
||||
--- |
||||
|
||||
json_value * json_parse (const json_char * json, |
||||
size_t length); |
||||
|
||||
json_value * json_parse_ex (json_settings * settings, |
||||
const json_char * json, |
||||
size_t length, |
||||
char * error); |
||||
|
||||
void json_value_free (json_value *); |
||||
|
||||
The `type` field of `json_value` is one of: |
||||
|
||||
* `json_object` (see `u.object.length`, `u.object.values[x].name`, `u.object.values[x].value`) |
||||
* `json_array` (see `u.array.length`, `u.array.values`) |
||||
* `json_integer` (see `u.integer`) |
||||
* `json_double` (see `u.dbl`) |
||||
* `json_string` (see `u.string.ptr`, `u.string.length`) |
||||
* `json_boolean` (see `u.boolean`) |
||||
* `json_null` |
||||
|
||||
|
||||
Compile-Time Options |
||||
-------------------- |
||||
|
||||
-DJSON_TRACK_SOURCE |
||||
|
||||
Stores the source location (line and column number) inside each `json_value`. |
||||
|
||||
This is useful for application-level error reporting. |
||||
|
||||
|
||||
Runtime Options |
||||
--------------- |
||||
|
||||
settings |= json_enable_comments; |
||||
|
||||
Enables C-style `// line` and `/* block */` comments. |
||||
|
||||
size_t value_extra |
||||
|
||||
The amount of space (if any) to allocate at the end of each `json_value`, in |
||||
order to give the application space to add metadata. |
||||
|
||||
void * (* mem_alloc) (size_t, int zero, void * user_data); |
||||
void (* mem_free) (void *, void * user_data); |
||||
|
||||
Custom allocator routines. If NULL, the default `malloc` and `free` will be used. |
||||
|
||||
The `user_data` pointer will be forwarded from `json_settings` to allow application |
||||
context to be passed. |
||||
|
||||
|
||||
Changes in version 1.1.0 |
||||
------------------------ |
||||
|
||||
* UTF-8 byte order marks are now skipped if present |
||||
|
||||
* Allows cross-compilation by honoring --host if given (@wkz) |
||||
|
||||
* Maximum size for error buffer is now exposed in header (@LB--) |
||||
|
||||
* GCC warning for `static` after `const` fixed (@batrick) |
||||
|
||||
* Optional support for C-style line and block comments added (@Jin-W-FS) |
||||
|
||||
* `name_length` field added to object values |
||||
|
||||
* It is now possible to retrieve the source line/column number of a parsed `json_value` when `JSON_TRACK_SOURCE` is enabled |
||||
|
||||
* The application may now extend `json_value` using the `value_extra` setting |
||||
|
||||
* Un-ambiguate pow call in the case of C++ overloaded pow (@fcartegnie) |
||||
|
||||
* Fix null pointer de-reference when a non-existing array is closed and no root value is present |
||||
|
||||
|
||||
Loading…
Reference in new issue