欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 中json字符轉(zhuǎn)對(duì)象

在C語言的開發(fā)中,經(jīng)常會(huì)遇到需要將JSON字符轉(zhuǎn)換為對(duì)象的情況。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,用于前后端之間的數(shù)據(jù)傳輸。在C語言中,可以使用第三方庫(kù)cJSON來完成JSON字符轉(zhuǎn)對(duì)象的操作。

/* 代碼示例 */
#include <stdio.h>
#include <cJSON.h>
int main() {
char* jsonStr = "{\"name\":\"Tom\", \"age\":18}";
cJSON* json = cJSON_Parse(jsonStr);
char* name = cJSON_GetObjectItem(json, "name")->valuestring;
int age = cJSON_GetObjectItem(json, "age")->valueint;
printf("name: %s, age: %d", name, age);
cJSON_Delete(json);
return 0;
}

上述代碼使用cJSON庫(kù)中的cJSON_Parse函數(shù)將JSON字符串解析為cJSON對(duì)象。接著使用cJSON_GetObjectItem函數(shù)根據(jù)key獲取value,并使用value的類型進(jìn)行相應(yīng)的操作。

需要注意的是,在使用cJSON庫(kù)時(shí),需要引入cJSON.h頭文件,并在鏈接時(shí)添加cJSON庫(kù)。

/* 編譯命令 */
gcc main.c -lcjson

在實(shí)際開發(fā)中,通常需要將JSON字符串解析為具體的數(shù)據(jù)結(jié)構(gòu),以方便后續(xù)的操作。可以通過定義結(jié)構(gòu)體,并使用cJSON_ParseWithOpts函數(shù)解析JSON字符串時(shí)指定一個(gè)flag為cJSON_No_NULL選項(xiàng)來實(shí)現(xiàn)。

/* 示例代碼 */
typedef struct {
char* name;
int age;
} Person;
int main() {
char* jsonStr = "{\"name\":\"Tom\", \"age\":18}";
cJSON* json = cJSON_ParseWithOpts(jsonStr, NULL, cJSON_No_NULL);
Person person = {
.name = cJSON_GetObjectItem(json, "name")->valuestring,
.age = cJSON_GetObjectItem(json, "age")->valueint
};
printf("name: %s, age: %d", person.name, person.age);
cJSON_Delete(json);
return 0;
}

cJSON也提供了序列化方法來將對(duì)象轉(zhuǎn)換成JSON字符串。具體可使用cJSON_PrintUnformatted或cJSON_PrintBuffered函數(shù)將cJSON對(duì)象轉(zhuǎn)換為JSON字符串。

/* 序列化示例 */
int main() {
char* name = "Tom";
int age = 18;
cJSON* json = cJSON_CreateObject();
cJSON_AddStringToObject(json, "name", name);
cJSON_AddNumberToObject(json, "age", age);
char* jsonStr = cJSON_PrintUnformatted(json);
printf("json: %s", jsonStr);
cJSON_Delete(json);
cJSON_free(jsonStr);
return 0;
}

通過使用cJSON庫(kù),我們可以很方便地在C語言中完成JSON字符轉(zhuǎn)對(duì)象及對(duì)象轉(zhuǎn)字符串的操作,使得C語言在與前后端交互時(shí)更加靈活、高效。