色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c結(jié)構(gòu)體轉(zhuǎn)換 json 開源庫(kù)

在現(xiàn)代的軟件開發(fā)中,API 對(duì)接成為了非常重要的一部分。而在 API 交互中,數(shù)據(jù)的傳輸格式是一個(gè)必須要考慮的問題,目前最流行的兩種格式就是 XML 和 JSON。 對(duì)于 C 語(yǔ)言開發(fā)者而言,常常遇到將 C 語(yǔ)言中的結(jié)構(gòu)體轉(zhuǎn)換成為 JSON 格式的字符串的需求。這個(gè)時(shí)候我們就需要使用 C 結(jié)構(gòu)體轉(zhuǎn)換 json 的開源庫(kù)了。

CJSON 是一個(gè)比較受歡迎的 C 語(yǔ)言結(jié)構(gòu)體轉(zhuǎn)換 json 的開源庫(kù)。它提供了一系列的函數(shù),可以方便快捷地將 C 語(yǔ)言中的結(jié)構(gòu)體轉(zhuǎn)換為 JSON 對(duì)象,還可以將 JSON 對(duì)象轉(zhuǎn)換為 C 語(yǔ)言中的結(jié)構(gòu)體形式。 使用過程如下:

//構(gòu)造結(jié)構(gòu)體
struct student{
char name[20];    //姓名
int age;          //年齡
char sex;         //性別
};

我們想將上述結(jié)構(gòu)體轉(zhuǎn)換為如下 JSON 對(duì)象:

{
"name":"王小明",
"age":20,
"sex":"男"
}

那么我們可以這樣編寫代碼:

#include "cjson.h"
#include#includeint main()
{
//構(gòu)造結(jié)構(gòu)體
struct student{
char name[20];    //姓名
int age;          //年齡
char sex;         //性別
};
struct student s;
strcpy(s.name,"王小明");
s.age = 20;
s.sex = 'M';
//結(jié)構(gòu)體轉(zhuǎn)換為 JSON 對(duì)象
cJSON *json = cJSON_CreateObject();
cJSON_AddStringToObject(json, "name", s.name);
cJSON_AddNumberToObject(json, "age", s.age);
cJSON_AddStringToObject(json, "sex", s.sex == 'M' ? "男" : "女");
printf("%s",cJSON_Print(json));
cJSON_Delete(json);
}

如上述代碼所示,我們首先將結(jié)構(gòu)體的數(shù)據(jù)填入,然后使用 cJSON_CreateObject 函數(shù)創(chuàng)建一個(gè) JSON 對(duì)象,使用 cJSON_AddXXXX 函數(shù)添加數(shù)據(jù),最終使用 cJSON_Print 函數(shù)將 JSON 對(duì)象轉(zhuǎn)換成為 JSON 字符串。

除此之外,CJSON 還可以將 JSON 字符串轉(zhuǎn)換為 C 語(yǔ)言中的結(jié)構(gòu)體。一個(gè)例子代碼如下:

int main()
{
char *jsonstr = "{\"name\":\"王小明\",\"age\":20,\"sex\":\"男\(zhòng)"}";
char *name,*sex;
int age;
//JSON 轉(zhuǎn)換為結(jié)構(gòu)體
cJSON *json = cJSON_Parse(jsonstr); 
name = cJSON_GetObjectItem(json, "name")->valuestring;
age = cJSON_GetObjectItem(json, "age")->valueint;
sex = cJSON_GetObjectItem(json, "sex")->valuestring;
printf("姓名:%s\n年齡:%d\n性別:%s\n",name,age,sex);
cJSON_Delete(json);
}

如上述代碼所示,我們首先定義一個(gè) JSON 字符串,然后使用 cJSON_Parse 函數(shù)將字符串轉(zhuǎn)換為 JSON 對(duì)象,然后使用 cJSON_GetObjectItem 函數(shù)獲取對(duì)應(yīng)數(shù)據(jù)并賦值給變量,就可以方便快捷地將 JSON 字符串轉(zhuǎn)換為 C 語(yǔ)言中的結(jié)構(gòu)體了。

總之,使用 CJSON 可以非常方便地進(jìn)行結(jié)構(gòu)體與 JSON 的互相轉(zhuǎn)換,是一個(gè)非常實(shí)用的開源庫(kù)。