JSON是一種輕量級的數據交換格式,常用于前后端的數據傳輸和API接口的傳參。在C語言中,有許多開源的JSON解析庫,例如CJSON、JSMN等等。
使用CJSON庫很容易將C語言中的結構體轉換為JSON格式的數據,同時也能夠很方便地將JSON數據解析成C語言可識別的結構體。
typedef struct
{
int id;
char* name;
bool isPassed;
} Student;
Student stu = { 1001, "Tom", true };
cJSON* json_obj = cJSON_CreateObject();
cJSON_AddNumberToObject(json_obj, "id", stu.id);
cJSON_AddStringToObject(json_obj, "name", stu.name);
cJSON_AddBoolToObject(json_obj, "isPassed", stu.isPassed);
char* json_str = cJSON_Print(json_obj);
printf("json_str: %s\n", json_str);
stu.id = cJSON_GetObjectItem(json_obj, "id")->valueint;
stu.name = cJSON_GetObjectItem(json_obj, "name")->valuestring;
stu.isPassed = cJSON_GetObjectItem(json_obj, "isPassed")->valueint;
cJSON_Delete(json_obj);
以上代碼演示了CJSON的基本用法。首先定義了一個結構體Student,并初始化一個stu對象;然后通過cJSON_CreateObject()創建一個JSON對象,通過cJSON_AddXXXToObject()將stu結構體轉化為JSON對象,最后通過cJSON_Print()將JSON對象轉化為JSON字符串輸出。
接著,使用cJSON_GetObjectItem()將JSON字符串解析成JSON對象,并使用JSON對象的valueXXX屬性將對應的值賦值到結構體中。
以上是一個基本的CJSON用法說明,當然C語言中還有許多其他好用的JSON解析庫,有興趣的讀者可以了解一下。