#include <assert.h>
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "debug.h"
#include "printbuf.h"
#include "linkhash.h"
#include "arraylist.h"
#include "json_object.h"
#include "json_object_private.h"
#include "json_tokener.h"
Go to the source code of this file.
#define _GNU_SOURCE |
Definition at line 17 of file json_object.c.
#define AC_BETTER_PRECISION |
char* json_c_strndup | ( | const char * | str, |
size_t | n | ||
) |
Definition at line 108 of file json_tokener.c.
static int json_escape_str | ( | struct printbuf * | pb, |
char * | str | ||
) | [static] |
Definition at line 90 of file json_object.c.
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
obj | the json_object instance |
val | the json_object to be added |
Definition at line 522 of file json_object.c.
static void json_object_array_delete | ( | struct json_object * | this | ) | [static] |
Definition at line 488 of file json_object.c.
static void json_object_array_entry_free | ( | void * | data | ) | [static] |
Definition at line 483 of file json_object.c.
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)
obj | the json_object instance |
idx | the index to get the element at |
Definition at line 535 of file json_object.c.
int json_object_array_length | ( | struct json_object * | obj | ) |
Get the length of a json_object of type json_type_array
obj | the json_object instance |
Definition at line 516 of file json_object.c.
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.
obj | the json_object instance |
idx | the index to insert the element at |
val | the json_object to be added |
Definition at line 528 of file json_object.c.
static int json_object_array_to_json_string | ( | struct json_object * | this, |
struct printbuf * | pb | ||
) | [static] |
Definition at line 466 of file json_object.c.
static int json_object_boolean_to_json_string | ( | struct json_object * | this, |
struct printbuf * | pb | ||
) | [static] |
Definition at line 290 of file json_object.c.
static int json_object_double_to_json_string | ( | struct json_object * | this, |
struct printbuf * | pb | ||
) | [static] |
Definition at line 368 of file json_object.c.
static void json_object_generic_delete | ( | struct json_object * | this | ) | [static] |
Definition at line 155 of file json_object.c.
struct json_object* json_object_get | ( | struct json_object * | obj | ) | [read] |
Increment the reference count of json_object
obj | the json_object instance |
Definition at line 136 of file json_object.c.
struct array_list* json_object_get_array | ( | struct json_object * | obj | ) | [read] |
Get the arraylist of a json_object of type json_type_array
obj | the json_object instance |
Definition at line 505 of file json_object.c.
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.
obj | the json_object instance |
Definition at line 306 of file json_object.c.
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.
obj | the json_object instance |
Definition at line 395 of file json_object.c.
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.
obj | the json_object instance |
Definition at line 341 of file json_object.c.
struct lh_table* json_object_get_object | ( | struct json_object * | obj | ) | [read] |
Get the hashtable of a json_object of type json_type_object
obj | the json_object instance |
Definition at line 259 of file json_object.c.
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.
obj | the json_object instance |
Definition at line 452 of file json_object.c.
enum json_type json_object_get_type | ( | struct json_object * | obj | ) |
Get the type of the json_object
obj | the json_object instance |
Definition at line 190 of file json_object.c.
static int json_object_int_to_json_string | ( | struct json_object * | this, |
struct printbuf * | pb | ||
) | [static] |
Definition at line 326 of file json_object.c.
int json_object_is_type | ( | struct json_object * | obj, |
int | type | ||
) |
Check if the json_object is of a given type
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, |
Definition at line 184 of file json_object.c.
static void json_object_lh_entry_free | ( | struct lh_entry * | ent | ) | [static] |
Definition at line 236 of file json_object.c.
static struct json_object * json_object_new | ( | enum json_type | o_type | ) | [static, read] |
Definition at line 166 of file json_object.c.
struct json_object* json_object_new_array | ( | void | ) | [read] |
Create a new empty json_object of type json_type_array
Definition at line 495 of file json_object.c.
struct json_object* json_object_new_boolean | ( | boolean | b | ) | [read] |
Create a new empty json_object of type json_type_boolean
b | a boolean TRUE or FALSE (0 or 1) |
Definition at line 297 of file json_object.c.
struct json_object* json_object_new_double | ( | double | d | ) | [read] |
Create a new empty json_object of type json_type_double
d | the double |
Definition at line 386 of file json_object.c.
struct json_object* json_object_new_int | ( | int | i | ) | [read] |
Create a new empty json_object of type json_type_int
i | the integer |
Definition at line 332 of file json_object.c.
struct json_object* json_object_new_object | ( | void | ) | [read] |
Create a new empty object
Definition at line 248 of file json_object.c.
struct json_object* json_object_new_string | ( | const 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
s | the string |
Definition at line 432 of file json_object.c.
struct json_object* json_object_new_string_len | ( | const char * | s, |
int | len | ||
) | [read] |
Definition at line 442 of file json_object.c.
void json_object_object_add | ( | struct json_object * | obj, |
const 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
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 |
Definition at line 270 of file json_object.c.
void json_object_object_del | ( | struct json_object * | obj, |
const char * | key | ||
) |
Delete the given json_object field
The reference count will be decremented for the deleted object
obj | the json_object instance |
key | the object field name |
Definition at line 282 of file json_object.c.
static void json_object_object_delete | ( | struct json_object * | this | ) | [static] |
Definition at line 242 of file json_object.c.
struct json_object* json_object_object_get | ( | struct json_object * | obj, |
const char * | key | ||
) | [read] |
Get the json_object associate with a given object field
obj | the json_object instance |
key | the object field name |
Definition at line 277 of file json_object.c.
static int json_object_object_to_json_string | ( | struct json_object * | this, |
struct printbuf * | pb | ||
) | [static] |
Definition at line 214 of file json_object.c.
void json_object_put | ( | struct json_object * | obj | ) |
Decrement the reference count of json_object and free if it reaches zero
obj | the json_object instance |
Definition at line 144 of file json_object.c.
static void json_object_string_delete | ( | struct json_object * | this | ) | [static] |
Definition at line 426 of file json_object.c.
static int json_object_string_to_json_string | ( | struct json_object * | this, |
struct printbuf * | pb | ||
) | [static] |
Definition at line 417 of file json_object.c.
const char* json_object_to_json_string | ( | struct json_object * | obj | ) |
Stringify object to json format
obj | the json_object instance |
Definition at line 199 of file json_object.c.
void json_set_float_format | ( | const char * | f | ) |
Definition at line 362 of file json_object.c.
const char* float_format = "%e" |
Definition at line 360 of file json_object.c.
const char* json_hex_chars = "0123456789abcdef" |
Definition at line 41 of file json_object.c.
const char* json_number_chars = "0123456789.+-e" |
Definition at line 40 of file json_object.c.