Linux下cJSON編譯及示例

2021-09-24 03:34:59 字數 4311 閱讀 8248

make all

make prefix=/home/renzhong/cjson-master install

prefix這個引數是設定安裝路徑,這裡它只會安裝動態庫,靜態庫在原始碼包的目錄下能找到。經過這一步之後就會在安裝路徑下找到include和lib。

只需將cjson.h

和cjson.c

檔案拷貝到所需使用的目錄即可使用。

2、**示例

#include #include #include #include "cjson.h"

#define hu_max_send_len 512

int buffer_to_json1(void)

"; char *json_data = null;

//從緩衝區中解析出json結構

cjson * json= cjson_parse(data);

//將傳入的json結構轉化為字串並列印

json_data = cjson_print(json);

printf("test:%lu:%s\n",strlen(data),data);

printf("\ntest1:%lu\n%s\n",strlen(json_data),json_data);

free(json_data);

//將json結構所占用的資料空間釋放

cjson_delete(json);

return 0;

}int buffer_to_json2(void)

"; //從緩衝區中解析出json結構

cjson *json = cjson_parse(string);

cjson *node = null;

cjson *tnode = null;

char *json_data = null;

int size;

int i;

//cjosn_getobjectitem 根據key來查詢json節點 若果有返回非空

printf("test:%lu:%s\n",strlen(string),string);

json_data = cjson_print(json);

printf("\ntest2:%lu\n%s\n",strlen(json_data),json_data);

node = cjson_getobjectitem(json,"family");

if(node == null)

else

node = cjson_getobjectitem(json,"fam");

if(node == null)

else

//判斷是否有key是string的項 如果有返回1 否則返回0

if(1 == cjson_hasobjectitem(json,"family"))

else

if(1 == cjson_hasobjectitem(json,"fam"))

else

node = cjson_getobjectitem(json,"family");

if(node->type == cjson_array)

cjson_arrayforeach(tnode,node)

else

}return 0;

}int creat_json1(void)

; char data_temp2[hu_max_send_len] = ;

cjson *json = cjson_createobject();

int num = 0;

//向文件中增加乙個鍵值對

cjson_additemtoobject(json,"name",cjson_createstring("王大錘"));

//cjson_addnumbertoobject(json,"age",29);

num = 28;

cjson_additemtoobject(json,"age",cjson_createnumber(num));

cjson_additemtoobject(json,"love",array=cjson_createarray());

cjson_additemtoarray(array,cjson_createstring("lol"));

cjson_additemtoarray(array,cjson_createstring("nba"));

cjson_additemtoarray(array,cjson_createstring("go shopping"));

num = 58;

cjson_addnumbertoobject(json,"score",num);

cjson_addstringtoobject(json,"address","beijing");

//將json結構格式化到緩衝區

buf = cjson_print(json);

printf("\ntest3:%lu\n%s\n",strlen(buf),buf);

strcpy(data_temp,buf);

buf = cjson_printunformatted(json);

strcpy(data_temp2,buf);

printf("\ntest333:%lu\n%s\n",strlen(buf),buf);

free(buf);

//釋放json結構所占用的記憶體

cjson_delete(json);

//從緩衝區中解析出json結構

json= cjson_parse(data_temp);

buf = cjson_print(json);

printf("\ntest11:%lu\n%s\n",strlen(buf),buf);

free(buf);

cjson_delete(json);

json= cjson_parse(data_temp2);

buf = cjson_print(json);

printf("\ntest12:%lu\n%s\n",strlen(buf),buf);

free(buf);

cjson_delete(json);

return 0;

}int creat_json2(void)

; //先建立空物件

cjson *json = cjson_createobject();

//在物件上新增鍵值對

cjson_addstringtoobject(json,"country","china");

//新增陣列

cjson *array = null;

cjson_additemtoobject(json,"stars",array=cjson_createarray());

//在陣列上新增物件

cjson_additemtoarray(array,obj=cjson_createobject());

//在物件上新增鍵值對

cjson_additemtoobject(obj,"name",cjson_createstring("faye"));

cjson_addstringtoobject(obj,"address","beijing");

cjson_additemtoarray(array,obj=cjson_createobject());

cjson_additemtoobject(obj,"name",cjson_createstring("andy"));

cjson_additemtoobject(obj,"address",cjson_createstring("hk"));

cjson_additemtoarray(array,obj=cjson_createobject());

cjson_addstringtoobject(obj,"name","eddie");

cjson_addstringtoobject(obj,"address","taiwan");

cjson_addbooltoobject(obj, "acc", 1);

//將json結構格式化到緩衝區

buf = cjson_print(json);

printf("\ntest4:%lu\n%s\n",strlen(buf),buf);

strcpy(data_temp,buf);

//釋放

free(buf);

cjson_delete(json);

//解析

return 0;

}int main(void)

linux下使用C Json庫

3 解壓scons 2.1.0.tar.gz tar zvxf scons 2.1.0.tar.gz 我的解壓到了 opt json scons 2.1.0目錄下了 4 進入到解壓目錄scons 2.1.0下面,執行命令 sudo python setup.py install 5 解壓jsconc...

linux下使用C Json庫

安裝json庫 3 解壓scons 2.1.0.tar.gz tar zvxf scons 2.1.0.tar.gz 我的解壓到了 opt json scons 2.1.0目錄下了 4 進入到解壓目錄scons 2.1.0下面,執行命令 sudo python setup.py install 5 ...

Linux下編譯環境及Makefile的學習筆記

linux下編譯環境及makefile的學習筆記 wall類警告包含開啟所有警告的功能並且可以單獨對常見錯誤分別指定警告,這些警告中最為常用的為 wall類警告。它的作用是開啟所有型別的語法警告。非wall類警告提示最常見的有以下兩種 ansi 和 pedantic 前者強制gcc生成標準語法所要求...