2)只需將cjson.h 和 cjson.c 檔案拷貝到所需使用的目錄即可使用
例項
name: "tom",
age: 18,
man: true
注:1) key永遠是string型別
2) 這裡的18是雙精度,在json裡都用number來表示
建立cjson物件以及解包
1)建立跟節點:root =
cjson *root = cjson_createobject();
2)往跟節點裡新增資料:
//root =
cjson_additemtoobject(root, "name", cjson_createstring("tom"));
//root =
cjson_additemtoobject(root, "age", cjson_createnumber(18));
//root =
cjson_additemtoobject(root, "man", cjson_createbool(1));
3)將json物件轉換為字串**化為連續的空間方便傳輸)
char *p = cjson_print(root);
4)釋放cjson物件
cjson_delete(root);//釋放完跟節點,子節點自動釋放
free(p); //這個一定要釋放,因為cjson_print是malloc記憶體的
5)將字串型別json轉換為cjson資料結構, 解析
char *json_buffer;
cjson *root = cjson_parse(json_buffer);
6)解析出資料
cjson *name = cjson_getobjectitem(root, "name");
printf("name = %s\n", name->valuestring); //name = tom
cjson *age = cjson_getobjectitem(root, "age");
printf("age = %s\n", age->valueint); //age = 18
7)編譯:要加上cjson.c檔案和數學庫
gcc json_test.c cjson.c -lm
例一(json巢狀)
name: "tom",
age: 18
mobile: {
version: 6
**:#include "../h.h"
#include "cjson.h"
char *json_buffer;
void packet()
cjson *root = cjson_createobject();
cjson_additemtoobject(root, "name", cjson_createstring("tom"));
cjson_additemtoobject(root, "age", cjson_createnumber(18));
cjson *mobile = cjson_createobject();
cjson_additemtoobject(mobile, "version", cjson_createnumber(6));
cjson_additemtoobject(root, "mobile", mobile);
json_buffer = cjson_print(root);
printf("%s\n", json_buffer);
cjson_delete(root);
void unpacket()
cjson *root = cjson_parse(json_buffer);
cjson *name = cjson_getobjectitem(root, "name");
printf("name = %s\n", name->valuestring);
cjson *age = cjson_getobjectitem(root, "age");
printf("age = %d\n", age->valueint);
cjson *mobile = cjson_getobjectitem(root, "mobile");
cjson *branch = cjson_getobjectitem(mobile, "branch");
printf("branch = %s\n", branch->valuestring);
cjson *version = cjson_getobjectitem(mobile, "version");
printf("version = %d\n", version->valueint);
int main()
packet(); //打包
unpacket(); //解包
return 0;
例二(陣列)
name: "tom",
age: 18,
score: [91, 100, 80],
mobile: null
**:#include "../h.h"
#include "cjson.h"
char *json_buffer;
void packet()
cjson *root = cjson_createobject();
cjson_additemtoobject(root, "name", cjson_createstring("tom"));
cjson_additemtoobject(root, "age", cjson_createnumber(18));
cjson *score = cjson_createarray();
cjson_additemtoarray(score, cjson_createnumber(91));
cjson_additemtoarray(score, cjson_createnumber(100));
cjson_additemtoarray(score, cjson_createnumber(80));
cjson_additemtoobject(root, "score", score);
cjson_additemtoobject(root,"mobile", cjson_createnull());
json_buffer = cjson_print(root);
cjson_delete(root);
printf("%s\n", json_buffer);
void unpacket()
cjson *root = cjson_parse(json_buffer);
cjson *name = cjson_getobjectitem(root, "name");
printf("name = %s\n", name->valuestring);
cjson *age = cjson_getobjectitem(root, "age");
printf("age = %d\n", age->valueint);
cjson *score = cjson_getobjectitem(root, "score");
cjson *s1 = cjson_getarrayitem(score, 0);
printf("s1 = %d\n", s1->valueint);
cjson *s2 = cjson_getarrayitem(score, 1);
printf("s2 = %d\n", s2->valueint);
cjson *s3 = cjson_getarrayitem(score, 2);
printf("s3 = %d\n", s3->valueint);
int main()
packet();
unpacket();
return 0;
cjson構建 cJSON的構造和解析
對於cjson的使用,我主要是用來模擬遠端伺服器端返回的乙個json型別的目錄結構,客戶端進行獲取並進行解析,把解析出來的目錄按照原本的結構顯示在本地。cjson是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為ansi c標準的json解析器。cjson結構體 typedef struct cjson...
cJSON的構造和解析
對於cjson的使用,我主要是用來模擬遠端伺服器端返回的乙個 json 型別的目錄結構,客戶端進行獲取並進行解析,把解析出來的目錄按照原本的結構顯示在本地。cjson 是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為 ansi c 標準的json 解析器。進入cjson.h標頭檔案中可以檢視cjson...
json快速入門(cjson解析)
json是儲存和交換文字資訊的語法,與xml類似。json有兩種結構,分別是陣列和物件 json解析環境 cjson是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為ansi c標準的json解析器,cjson庫包括cjson.h和cjson.c兩個檔案,放入指定目錄直接呼叫就可以了。1.有一對基本的 ...