yajl_parse.h File Reference
`#include <yajl/yajl_common.h>`
`#include <stddef.h>`

Go to the source code of this file.

## Data Structures

struct | yajl_callbacks

## Typedefs

typedef struct yajl_handle_t * | yajl_handle

## Enumerations

enum | yajl_status { yajl_status_ok , yajl_status_client_canceled , yajl_status_error }
enum | yajl_option { yajl_allow_comments = 0x01 , yajl_dont_validate_strings = 0x02 , yajl_allow_trailing_garbage = 0x04 , yajl_allow_multiple_values = 0x08 , yajl_allow_partial_values = 0x10 }

## Functions

YAJL_API const char * | yajl_status_to_string (yajl_status code)
YAJL_API yajl_handle | yajl_alloc (const yajl_callbacks *callbacks, yajl_alloc_funcs *afs, void *ctx)
YAJL_API int | yajl_config (yajl_handle h, yajl_option opt,...)
YAJL_API void | yajl_free (yajl_handle handle)
YAJL_API yajl_status | yajl_parse (yajl_handle hand, const unsigned char *jsonText, size_t jsonTextLength)
YAJL_API yajl_status | yajl_complete_parse (yajl_handle hand)
YAJL_API unsigned char * | yajl_get_error (yajl_handle hand, int verbose, const unsigned char *jsonText, size_t jsonTextLength)
YAJL_API size_t | yajl_get_bytes_consumed (yajl_handle hand)
YAJL_API void | yajl_free_error (yajl_handle hand, unsigned char *str)

## Detailed Description

Interface to YAJL's JSON stream parsing facilities.

## Typedef Documentation

## yajl_handle

typedef struct yajl_handle_t* yajl_handle

an opaque handle to a parser

## Enumeration Type Documentation

## yajl_option

enum yajl_option

configuration parameters for the parser, these may be passed to yajl_config() along with option specific argument(s). In general, all configuration parameters default to off.

Enumerator
yajl_allow_comments | Ignore javascript style comments present in JSON input. Non-standard, but rather fun arguments: toggled off with integer zero, on otherwise. example: yajl_config(h, yajl_allow_comments, 1); // turn comment support on
yajl_dont_validate_strings | When set the parser will verify that all strings in JSON input are valid UTF8 and will emit a parse error if this is not so. When set, this option makes parsing slightly more expensive (~7% depending on processor and compiler in use) example: yajl_config(h, yajl_dont_validate_strings, 1); // disable utf8 checking
yajl_allow_trailing_garbage | By default, upon calls to yajl_complete_parse(), yajl will ensure the entire input text was consumed and will raise an error otherwise. Enabling this flag will cause yajl to disable this check. This can be useful when parsing json out of a that contains more than a single JSON document.

yajl_allow_multiple_values

Allow multiple values to be parsed by a single handle. The entire text must be valid JSON, and values can be seperated by any kind of whitespace. This flag will change the behavior of the parser, and cause it continue parsing after a value is parsed, rather than transitioning into a complete state. This option can be useful when parsing multiple values from an input stream.

yajl_allow_partial_values | When yajl_complete_parse() is called the parser will check that the top level value was completely consumed. I.E., if called whilst in the middle of parsing a value yajl will enter an error state (premature EOF). Setting this flag suppresses that check and the corresponding error.

## yajl_status

enum yajl_status

error codes returned from this interface

Enumerator
yajl_status_ok | no error was encountered
yajl_status_client_canceled | a client callback returned zero, stopping the parse
yajl_status_error | An error occured during the parse. Call yajl_get_error for more information about the encountered error

## Function Documentation

## yajl_alloc()

YAJL_API yajl_handle yajl_alloc | ( | const yajl_callbacks * | callbacks,
|  | yajl_alloc_funcs * | afs,
|  | void * | ctx )

allocate a parser handle

Parameters

  callbacks | a yajl callbacks structure specifying the functions to call when different JSON entities are encountered in the input text. May be NULL, which is only useful for validation.
  afs | memory allocation functions, may be NULL for to use C runtime library routines (malloc and friends)
  ctx | a context pointer that will be passed to callbacks.

References YAJL_API.

## yajl_complete_parse()

YAJL_API yajl_status yajl_complete_parse | ( | yajl_handle | hand | ) |

Parse any remaining buffered json. Since yajl is a stream-based parser, without an explicit end of input, yajl sometimes can't decide if content at the end of the stream is valid or not. For example, if "1" has been fed in, yajl can't know whether another digit is next or some character that would terminate the integer token.

Parameters

  hand | - a handle to the json parser allocated with yajl_alloc

References YAJL_API.

## yajl_config()

YAJL_API int yajl_config | ( | yajl_handle | h,
|  | yajl_option | opt,
|  |  | ... )

allow the modification of parser options subsequent to handle allocation (via yajl_alloc)

Returns
  zero in case of errors, non-zero otherwise

References YAJL_API.

## yajl_free()

YAJL_API void yajl_free | ( | yajl_handle | handle | ) |

free a parser handle

References YAJL_API.

## yajl_free_error()

YAJL_API void yajl_free_error | ( | yajl_handle | hand,
|  | unsigned char * | str )

free an error returned from yajl_get_error

References YAJL_API.

## yajl_get_bytes_consumed()

YAJL_API size_t yajl_get_bytes_consumed | ( | yajl_handle | hand | ) |

get the amount of data consumed from the last chunk passed to YAJL.

In the case of a successful parse this can help you understand if the entire buffer was consumed (which will allow you to handle "junk at end of input").

In the event an error is encountered during parsing, this function affords the client a way to get the offset into the most recent chunk where the error occured. 0 will be returned if no error was encountered.

References YAJL_API.

## yajl_get_error()

YAJL_API unsigned char * yajl_get_error | ( | yajl_handle | hand,
|  | int | verbose,
|  | const unsigned char * | jsonText,
|  | size_t | jsonTextLength )

get an error string describing the state of the parse.

If verbose is non-zero, the message will include the JSON text where the error occured, along with an arrow pointing to the specific char.

Returns
  A dynamically allocated string will be returned which should be freed with yajl_free_error

References YAJL_API.

## yajl_parse()

YAJL_API yajl_status yajl_parse | ( | yajl_handle | hand,
|  | const unsigned char * | jsonText,
|  | size_t | jsonTextLength )

Parse some json!

Parameters

  hand | - a handle to the json parser allocated with yajl_alloc
  jsonText | - a pointer to the UTF8 json text to be parsed
  jsonTextLength | - the length, in bytes, of input text

References YAJL_API.

## yajl_status_to_string()

YAJL_API const char * yajl_status_to_string | ( | yajl_status | code | ) |

attain a human readable, english, string for an error

References YAJL_API.