c json 序列化是將json數(shù)據(jù)轉(zhuǎn)換成c語(yǔ)言中的數(shù)據(jù)類型,為了方便讀取和處理數(shù)據(jù),c json 序列化在實(shí)際應(yīng)用中扮演著重要的角色。下面介紹c json 序列化的特性。
#include <stdio.h> #include <stdlib.h> #include <cJSON.h> void main() { cJSON *root = cJSON_CreateObject(); // 創(chuàng)建json對(duì)象 cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 20); cJSON_AddStringToObject(root, "gender", "male"); char *out = cJSON_PrintUnformatted(root); // 將json對(duì)象轉(zhuǎn)成字符串 printf("%s\n", out); free(out); cJSON_Delete(root); // 釋放json對(duì)象 }
1. json對(duì)象聲明和創(chuàng)建:使用cJSON_CreateObject()函數(shù)創(chuàng)建json對(duì)象,這個(gè)函數(shù)返回一個(gè)cJSON類型指針,并指向一個(gè)空的json對(duì)象,即創(chuàng)建一個(gè)json對(duì)象的過(guò)程。在創(chuàng)建json對(duì)象前需要引入"cJSON.h"頭文件,這個(gè)頭文件包含了所需要用到的cjson的函數(shù)和類型定義。
2. 向json對(duì)象中添加數(shù)據(jù):使用cJSON_AddStringToObject()、cJSON_AddNumberToObject()、cJSON_AddBoolToObject()等函數(shù)將從c語(yǔ)言中的數(shù)據(jù)類型轉(zhuǎn)化后的數(shù)據(jù)添加到j(luò)son對(duì)象中,函數(shù)的格式如下:void cJSON_AddStringToObject(cJSON *object, const char *string, const char *value);其中,object表示要段添加數(shù)據(jù)的json對(duì)象,string表示添加數(shù)據(jù)的key值,value表示要添加的數(shù)據(jù)。
3. json對(duì)象轉(zhuǎn)化為字符串:使用cJSON_PrintUnformatted()函數(shù)將json對(duì)象轉(zhuǎn)換成字符串格式,即序列化操作,序列化后的字符串可以和其他應(yīng)用程序交換數(shù)據(jù)或保存文件等。函數(shù)的格式如下:char *cJSON_PrintUnformatted(cJSON *root);其中,cJSON_PrintUnformatted()函數(shù)返回一個(gè)指向json轉(zhuǎn)化后的字符串的指針。
4. 釋放json對(duì)象:在json對(duì)象不再被使用時(shí),需要使用cJSON_Delete()函數(shù)釋放內(nèi)存,避免內(nèi)存泄露,這個(gè)函數(shù)格式如下:void cJSON_Delete(cJSON *object);其中object表示要釋放的json對(duì)象的指針。