# json_object.h File Reference

## Defines
#define | JSON_OBJECT_DEF_HASH_ENTIRES 16
#define | FALSE ((boolean)0)
#define | TRUE ((boolean)1)
#define | json_object_object_foreach(obj, key, val)
#define | json_object_object_foreachC(obj, iter) for(iter.entry = json_object_get_object(obj)->head; (iter.entry ? (iter.key = (char*)iter.entry->k, iter.val = (struct json_object*)iter.entry->v, iter.entry) : 0); iter.entry = iter.entry->next)
## Typedefs
typedef int | boolean
## Enumerations
enum | json_type { json_type_null, json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string }
## Functions
struct json_object * | json_object_get (struct json_object *obj)
void | json_object_put (struct json_object *obj)
int | json_object_is_type (struct json_object *obj, enum json_type type)
enum json_type | json_object_get_type (struct json_object *obj)
char * | json_object_to_json_string (struct json_object *obj)
struct json_object * | json_object_new_object (void)
struct lh_table * | json_object_get_object (struct json_object *obj)
void | json_object_object_add (struct json_object *obj, char *key, struct json_object *val)
struct json_object * | json_object_object_get (struct json_object *obj, char *key)
void | json_object_object_del (struct json_object *obj, char *key)
struct json_object * | json_object_new_array (void)
struct array_list * | json_object_get_array (struct json_object *obj)
int | json_object_array_length (struct json_object *obj)
int | json_object_array_add (struct json_object *obj, struct json_object *val)
int | json_object_array_put_idx (struct json_object *obj, int idx, struct json_object *val)
struct json_object * | json_object_array_get_idx (struct json_object *obj, int idx)
struct json_object * | json_object_new_boolean (boolean b)
boolean | json_object_get_boolean (struct json_object *obj)
struct json_object * | json_object_new_int (int i)
int | json_object_get_int (struct json_object *obj)
struct json_object * | json_object_new_double (double d)
double | json_object_get_double (struct json_object *obj)
struct json_object * | json_object_new_string (char *s)
struct json_object * | json_object_new_string_len (char *s, int len)
char * | json_object_get_string (struct json_object *obj)
## Variables
char * | json_number_chars
char * | json_hex_chars

## Define Documentation

#define FALSE ((boolean)0)

#define JSON_OBJECT_DEF_HASH_ENTIRES 16

#define json_object_object_foreach | ( | obj,
|  | key,
|  | val |  | ) |

Value:

    char *key; struct json_object *val; struct lh_entry *entry; \
     for(entry = json_object_get_object(obj)->head; (entry ? (key = (char*)entry->k, val = (struct json_object*)entry->v, entry) : 0); entry = entry->next)

Iterate through all keys and values of an object

Parameters:

  | obj | the json_object instance
  | key | the local name for the char* key variable defined in the body
  | val | the local name for the json_object* object variable defined in the body

#define json_object_object_foreachC | ( | obj,
|  | iter |  | ) | for(iter.entry = json_object_get_object(obj)->head; (iter.entry ? (iter.key = (char*)iter.entry->k, iter.val = (struct json_object*)iter.entry->v, iter.entry) : 0); iter.entry = iter.entry->next)

Iterate through all keys and values of an object (ANSI C Safe)

Parameters:

  | obj | the json_object instance
  | iter | the object iterator

#define TRUE ((boolean)1)

## Typedef Documentation

typedef int boolean

## Enumeration Type Documentation

enum json_type

Enumerator:

  json_type_null |
  json_type_boolean |
  json_type_double |
  json_type_int |
  json_type_object |
  json_type_array |
  json_type_string |

## Function Documentation

int json_object_array_add | ( | struct json_object * | obj,
|  | struct json_object * | val |
| ) |  |  |

Add an element to the end of a json_object of type json_type_array

The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get

Parameters:

  | obj | the json_object instance
  | val | the json_object to be added

struct json_object* json_object_array_get_idx | ( | struct json_object * | obj,
|  | int | idx |
| ) |  |  | `[read]`

Get the element at specificed index of the array (a json_object of type json_type_array)

Parameters:

  | obj | the json_object instance
  | idx | the index to get the element at

Returns:
  the json_object at the specified index (or NULL)

int json_object_array_length | ( | struct json_object * | obj | ) |

Get the length of a json_object of type json_type_array

Parameters:

  | obj | the json_object instance

Returns:
  an int

int json_object_array_put_idx | ( | struct json_object * | obj,
|  | int | idx,
|  | struct json_object * | val |
| ) |  |  |

Insert or replace an element at a specified index in an array (a json_object of type json_type_array)

The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get

The reference count of a replaced object will be decremented.

The array size will be automatically be expanded to the size of the index if the index is larger than the current size.

Parameters:

  | obj | the json_object instance
  | idx | the index to insert the element at
  | val | the json_object to be added

struct json_object* json_object_get | ( | struct json_object * | obj | ) | `[read]`

Increment the reference count of json_object

Parameters:

  | obj | the json_object instance

struct array_list* json_object_get_array | ( | struct json_object * | obj | ) | `[read]`

Get the arraylist of a json_object of type json_type_array

Parameters:

  | obj | the json_object instance

Returns:
  an arraylist

boolean json_object_get_boolean | ( | struct json_object * | obj | ) |

Get the boolean value of a json_object

The type is coerced to a boolean if the passed object is not a boolean. integer and double objects will return FALSE if there value is zero or TRUE otherwise. If the passed object is a string it will return TRUE if it has a non zero length. If any other object type is passed TRUE will be returned if the object is not NULL.

Parameters:

  | obj | the json_object instance

Returns:
  a boolean

double json_object_get_double | ( | struct json_object * | obj | ) |

Get the double value of a json_object

The type is coerced to a double if the passed object is not a double. integer objects will return their dboule conversion. Strings will be parsed as a double. If no conversion exists then 0.0 is returned.

Parameters:

  | obj | the json_object instance

Returns:
  an double

int json_object_get_int | ( | struct json_object * | obj | ) |

Get the int value of a json_object

The type is coerced to a int if the passed object is not a int. double objects will return their integer conversion. Strings will be parsed as an integer. If no conversion exists then 0 is returned.

Parameters:

  | obj | the json_object instance

Returns:
  an int

struct lh_table* json_object_get_object | ( | struct json_object * | obj | ) | `[read]`

Get the hashtable of a json_object of type json_type_object

Parameters:

  | obj | the json_object instance

Returns:
  a linkhash

char* json_object_get_string | ( | struct json_object * | obj | ) |

Get the string value of a json_object

If the passed object is not of type json_type_string then the JSON representation of the object is returned.

The returned string memory is managed by the json_object and will be freed when the reference count of the json_object drops to zero.

Parameters:

  | obj | the json_object instance

Returns:
  a string

enum json_type json_object_get_type | ( | struct json_object * | obj | ) |

Get the type of the json_object

Parameters:

  | obj | the json_object instance

Returns:
  type being one of: json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string,

int json_object_is_type | ( | struct json_object * | obj,
|  | enum json_type | type |
| ) |  |  |

Check if the json_object is of a given type

Parameters:

  | obj | the json_object instance
  | type | one of: json_type_boolean, json_type_double, json_type_int, json_type_object, json_type_array, json_type_string,

struct json_object* json_object_new_array | ( | void |  | ) | `[read]`

Create a new empty json_object of type json_type_array

Returns:
  a json_object of type json_type_array

struct json_object* json_object_new_boolean | ( | boolean | b | ) | `[read]`

Create a new empty json_object of type json_type_boolean

Parameters:

  | b | a boolean TRUE or FALSE (0 or 1)

Returns:
  a json_object of type json_type_boolean

struct json_object* json_object_new_double | ( | double | d | ) | `[read]`

Create a new empty json_object of type json_type_double

Parameters:

  | d | the double

Returns:
  a json_object of type json_type_double

struct json_object* json_object_new_int | ( | int | i | ) | `[read]`

Create a new empty json_object of type json_type_int

Parameters:

  | i | the integer

Returns:
  a json_object of type json_type_int

struct json_object* json_object_new_object | ( | void |  | ) | `[read]`

Create a new empty object

Returns:
  a json_object of type json_type_object

struct json_object* json_object_new_string | ( | char * | s | ) | `[read]`

Create a new empty json_object of type json_type_string

A copy of the string is made and the memory is managed by the json_object

Parameters:

  | s | the string

Returns:
  a json_object of type json_type_string

struct json_object* json_object_new_string_len | ( | char * | s,
|  | int | len |
| ) |  |  | `[read]`

void json_object_object_add | ( | struct json_object * | obj,
|  | char * | key,
|  | struct json_object * | val |
| ) |  |  |

Add an object field to a json_object of type json_type_object

The reference count will *not* be incremented. This is to make adding fields to objects in code more compact. If you want to retain a reference to an added object you must wrap the passed object with json_object_get

Parameters:

  | obj | the json_object instance
  | key | the object field name (a private copy will be duplicated)
  | val | a json_object or NULL member to associate with the given field

void json_object_object_del | ( | struct json_object * | obj,
|  | char * | key |
| ) |  |  |

Delete the given json_object field

The reference count will be decremented for the deleted object

Parameters:

  | obj | the json_object instance
  | key | the object field name

struct json_object* json_object_object_get | ( | struct json_object * | obj,
|  | char * | key |
| ) |  |  | `[read]`

Get the json_object associate with a given object field

Parameters:

  | obj | the json_object instance
  | key | the object field name

Returns:
  the json_object associated with the given field name

void json_object_put | ( | struct json_object * | obj | ) |

Decrement the reference count of json_object and free if it reaches zero

Parameters:

  | obj | the json_object instance

char* json_object_to_json_string | ( | struct json_object * | obj | ) |

Stringify object to json format

Parameters:

  | obj | the json_object instance

Returns:
  a string in JSON format

## Variable Documentation

char* json_hex_chars

char* json_number_chars