JSON-C的使用

  1. 使用json-c前,先在自己的linux上安装json-c的库。
  2. 函数解析:

struct json_object * json_object_new_object();

//创建个空的json_type_object类型的JSON对象

struct json_object* json_object_new_boolean(Boolean b);

//创建个json_type_boolean值类型json对象

Boolean json_object_get_boolean(struct json_object *obj);

//从json对象中boolean值类型得到boolean值

int json_object_get_int(struct json_object *obj);

//从json对象中int值类型得到int值

struct json_object * json_object_new_array();

//创建个空的json_type_array类型JSON数组值对象

struct json_object * json_tokener_parse(char *str);

//由str里的JSON字符串生成JSON对象,str是json_object_to_json_string() 生成的。

参数:

str :json字符串

struct json_object * json_object_object_get(struct json_object * json,char *name);

//从json中按名字取一个对象。

参数:

json :json对象

name : json域名字

struct json_object * * json_object_get(struct json_object * this)

//手动的增加对象引用计数(每个对象的初始引用计数为1)。使用c库最关心的是内存谁来分配, 谁来释放. jsonc的内存管理方式, 是基于引用计数的内存树(链), 如果把一个struct json_object 对象a, add到另一个对象b上, 就不用显式的释放(json_object_put) a了, 相当于把a挂到了b的对象树上, 释放b的时候, 就会释放a. 当a既add到b上, 又add到对象c上时会导致a被释放两次(double free), 这时可以增加a的引用计数(调用函数json_object_get(a)), 这时如果先释放b, 后释放c, 当释放b时, 并不会真正的释放a, 而是减少a的引用计数为1, 然后释放c时, 才真正释放a.

参数:

this:json对象

void json_object_put(struct json_object * this)

//减少对象引用次数一次,当对象的引用计数减少到0时就会释放资源

参数:

This:json对象

Int json_object_is_type(struct json_object * this, enum json_type type)

//检查json_object是json的某个类型

参数:

this: json_object 实例

type: json_type_boolean,json_type_double, json_type_int, json_type_object, json_type_array, json_type_string

enum json_type json_object_get_type(struct json_object * this )

//得到json_object的类型。

参数:

this – json对象

char * json_object_to_json_string(struct json_object * this)

//将json_object内容转换json格式字符串,其中可能含有转义符。

参数:

this – json对象

返回值:

Json格式字符串

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

//添加个对象域到json对象中

参数:

Obj – json对象

key – 域名字

val – json值对象

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

//删除key值json对象

参数:

obj – json对象

key – 域名字

int json_object_array_length(struct json_object *obj);

//得到json对象数组的长度

参数:

ob j – json数组值对象

extern int json_object_array_add(struct json_object *obj,struct json_object *val);

//添加一元素在json对象数组末端

参数:

ob j – json数组值对象

val – json值对象

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

//在指定的json对象数组下标插入或替换一个json对象元素。

参数:

ob j – json数组值对象

val – json值对象

idx – 数组下标

struct json_object * json_object_array_get_idx(struct json_object * json_array,int i);

//从数组中,按下标取JSON值对象

参数:

json_array – json 数组类型对象

i – 数组下标位置

定义宏 json_object_object_foreach(obj,key,val)

//遍历json对象的key和值 (key, val默认参数不变)

你可能感兴趣的:(c语言)