|
INGOR
|
JSON parser, writer and Simple Print API. More...
Public Member Functions | |
| ytObject * | ytJSON_parse (FILE *fp, int opt) |
| Parses JSON format data from file stream. | |
| ytObject * | ytJSON_parseStr (const char *str) |
| Parses JSON format data from a string. | |
| void | ytJSON_printDouble (FILE *fp, double v) |
| Prints the double value as a JSON-complied expression. | |
| void | ytJSON_print (FILE *fp, const ytObject *obj, int opt) |
| Prints an ytObject instance in JSON format into the stream. | |
| ytJSON_SP * | ytJSON_SP_new (FILE *fp, int readable) |
| Initializes the Simple Print API of JSON. | |
| void | ytJSON_SP_delete (ytJSON_SP *work) |
| Finishes the outputting using Simple Print API. | |
| void | ytJSON_SP_beginObject (ytJSON_SP *work) |
| Begins a new object block. | |
| void | ytJSON_SP_endObject (ytJSON_SP *work) |
| Ends a object block. | |
| void | ytJSON_SP_beginArray (ytJSON_SP *work) |
| Begins a new array. | |
| void | ytJSON_SP_endArray (ytJSON_SP *work) |
| Ends a definition of array. | |
| void | ytJSON_SP_putStr (ytJSON_SP *work, const char *name, const char *value) |
| Puts a string value with its name. | |
| void | ytJSON_SP_putInt (ytJSON_SP *work, const char *name, int value) |
| Puts an integer value with its name. | |
| void | ytJSON_SP_putDouble (ytJSON_SP *work, const char *name, double value) |
| Puts a double value with its name. | |
| void | ytJSON_SP_putDoubleArray (ytJSON_SP *work, const char *name, const ytDoubleArray *value) |
| Puts a double array value with its name. | |
| void | ytJSON_SP_putIntArray (ytJSON_SP *work, const char *name, const ytIntArray *value) |
| Puts a integer array value with its name. | |
| void | ytJSON_SP_putStrArray (ytJSON_SP *work, const char *name, const ytStrArray *value) |
| Puts a string array value with its name. | |
| void | ytJSON_SP_putObject (ytJSON_SP *work, const char *name) |
| Puts an object with its name. | |
| void | ytJSON_SP_putArray (ytJSON_SP *work, const char *name) |
| Puts an array with its name. | |
Related Symbols | |
(Note that these are not member symbols.) | |
| #define | ytJSON_OPT_HYPHEN_BREAK |
| Constant value for the option in ytJSON_parse(). | |
| #define | ytJSON_OPT_FORMAT |
| Constant value for the option in ytJSON_print(). | |
JSON parser, writer and Simple Print API.
This provides funtions for reading and outputing with JSON format. For outputing there are two types of interface: one for outputing a ytKeyValues object as JSON, one for outputing without using a ytKeyValues object.
This is an example of the code.
If you want to output the above JSON object, write code as below.
| ytObject * ytJSON_parse | ( | FILE * | fp, |
| int | opt ) |
Parses JSON format data from file stream.
An object containing pairs of name-values is returned as ytKeyValues instance.
An array is converted to an instance of ytArray.
Any numerical value is converted to a double precision floating point value as an ytValue object with the ytType_DOUBLE type.
A Boolean value is converted to an integer value as an ytValue object with the ytType_INT type.
A null value is return as ytType_NULL value in a ytValue object.
Some optional settings can be accepted. Currently, only ytJSON_OPT_HYPHEN_BREAK is suppoted.
| fp | FILE stream. |
| opt | 0 or ytJSON_OPT_HYPHEN_BREAK for enabling stopping parsing if a line with only "-" is found. |
| ytObject * ytJSON_parseStr | ( | const char * | str | ) |
Parses JSON format data from a string.
See ytJSON_parse() for details.
| void ytJSON_print | ( | FILE * | fp, |
| const ytObject * | obj, | ||
| int | opt ) |
Prints an ytObject instance in JSON format into the stream.
The object can contain only ytKeyValues, ytType_INT, ytType_DOUBLE, ytType_CHAR_P (string), and ytArray instances.
Numerical values need to be ytType_DOUBLE values. ytType_INT values are regarded as Boolean values.
| obj | ytObject instance to print. |
| fp | FILE pointer. |
| opt | 0 or ytJSON_OPT_FORMAT for printing with human friendly formattings. |
| void ytJSON_printDouble | ( | FILE * | fp, |
| double | v ) |
Prints the double value as a JSON-complied expression.
An infinity value is printed as "1e999999" or "-1e999999", and these expression will be parsed as an infinity when parsing.
A NaN value is printed as "null".
| fp | FILE pointer |
| v | double value to print. |
| void ytJSON_SP_beginArray | ( | ytJSON_SP * | work | ) |
Begins a new array.
Users mus call ytJSON_SP_endArray() to tell the end of the array definition. To output elements of the array, simply call put functions such as ytJSON_SP_putStr().
| work | pointer to the ytJSON_SP instance. |
| void ytJSON_SP_beginObject | ( | ytJSON_SP * | work | ) |
Begins a new object block.
Users must call ytJSON_SP_endObject() to tell the end of object definition. Here an object block refers to an object defined as a pair of braces: { and } in JSON.
| work | pointer to the ytJSON_SP instance. |
| void ytJSON_SP_delete | ( | ytJSON_SP * | work | ) |
Finishes the outputting using Simple Print API.
If the number of end functions such as ytJSON_SP_endObject() called is not enough for begin functions, then this automatically ends the particular object or array definition blocks.
| work | pointer to the ytJSON_SP object. |
| void ytJSON_SP_endArray | ( | ytJSON_SP * | work | ) |
Ends a definition of array.
| work | pointer to the ytJSON_SP instance. |
| void ytJSON_SP_endObject | ( | ytJSON_SP * | work | ) |
Ends a object block.
| work | pointer to the ytJSON_SP instance. |
| ytJSON_SP * ytJSON_SP_new | ( | FILE * | fp, |
| int | readable ) |
Initializes the Simple Print API of JSON.
| fp | File pointer to output. |
| readable | Set 1 if indentation is enabled for human readablility. This increases the file size. |
| void ytJSON_SP_putArray | ( | ytJSON_SP * | work, |
| const char * | name ) |
Puts an array with its name.
This begins a new array block. Therefore, users must close the array definition by ytJSON_SP_endArray() after putting all the elements of the array you want to put.
| name | name of a value to output. |
| void ytJSON_SP_putDouble | ( | ytJSON_SP * | work, |
| const char * | name, | ||
| double | value ) |
Puts a double value with its name.
| work | |
| name | |
| value |
| void ytJSON_SP_putDoubleArray | ( | ytJSON_SP * | work, |
| const char * | name, | ||
| const ytDoubleArray * | value ) |
Puts a double array value with its name.
| work | |
| name | |
| value |
| void ytJSON_SP_putInt | ( | ytJSON_SP * | work, |
| const char * | name, | ||
| int | value ) |
Puts an integer value with its name.
| work | |
| name | |
| value |
| void ytJSON_SP_putIntArray | ( | ytJSON_SP * | work, |
| const char * | name, | ||
| const ytIntArray * | value ) |
Puts a integer array value with its name.
| work | |
| name | |
| value |
| void ytJSON_SP_putObject | ( | ytJSON_SP * | work, |
| const char * | name ) |
Puts an object with its name.
This begins a new object block. Therefore, users must close the object definition by ytJSON_SP_endObject() after putting the pairs of names and their values.
| name | name of a value to output. |
| void ytJSON_SP_putStr | ( | ytJSON_SP * | work, |
| const char * | name, | ||
| const char * | value ) |
Puts a string value with its name.
| work | pointer to the ytJSON_SP instance. |
| name |
| void ytJSON_SP_putStrArray | ( | ytJSON_SP * | work, |
| const char * | name, | ||
| const ytStrArray * | value ) |
Puts a string array value with its name.
| work | |
| name | |
| value |