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

c json序列化反序列化

錢良釵2年前10瀏覽0評論

C JSON序列化和反序列化是現代編程中經常用到的技術。C語言作為一種高性能計算機語言,使用C JSON序列化和反序列化技術可以方便地將結構體等復雜數據類型轉換為JSON格式的字符串,以便于網絡傳輸或存儲。

在C語言中,一般使用第三方庫來進行JSON序列化和反序列化操作。常用的JSON庫有:

- cJSON
- Jansson
- JSON-C

其中,cJSON是比較輕量級的JSON庫,具有體積小、速度快等特點。下面以cJSON為例,介紹C JSON序列化和反序列化的使用方法:

首先需要在代碼中包含cJSON庫頭文件:

#include "cJSON.h"

然后定義需要轉換的結構體:

typedef struct student {
char name[20];
int age;
char address[50];
} Student;

接下來,將需要轉換的結構體按照JSON格式創建一個cJSON對象,并將需要轉換的數據賦值給該對象:

Student stu = {"Tom", 18, "China Beijing"};
cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", stu.name);
cJSON_AddNumberToObject(root, "age", stu.age);
cJSON_AddStringToObject(root, "address", stu.address);

最后將cJSON對象轉換成JSON格式的字符串:

char *jsonStr = cJSON_Print(root);
printf("JSON string:\n%s\n", jsonStr);

反序列化就是將JSON格式的字符串轉換成C語言數據類型。同樣地,先將JSON格式的字符串解析成cJSON對象,然后獲取對應的數據:

cJSON *json = cJSON_Parse(jsonStr);
if (json != NULL) {
const cJSON *name = cJSON_GetObjectItem(json, "name");
const cJSON *age = cJSON_GetObjectItem(json, "age");
const cJSON *address = cJSON_GetObjectItem(json, "address");
Student stu2;
strcpy(stu2.name, name->valuestring);
stu2.age = age->valueint;
strcpy(stu2.address, address->valuestring);
printf("Deserialize a student:\n");
printf("Name=%s, Age=%d, Address=%s\n", stu2.name, stu2.age, stu2.address);
}
cJSON_Delete(json);

注意:使用完cJSON對象之后需要調用cJSON_Delete函數進行內存釋放。