JSON(JavaScript Object Notation,JavaScript對象表示法)是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,也易于機器解析和生成。在C語言中,我們可以使用第三方庫cJSON來實現(xiàn)對JSON的解析和生成。
首先,我們需要下載cJSON庫并解壓縮。打開解壓出來的文件夾,可以看到有一個cJSON.h頭文件和一個cJSON.c源文件。
#include "cJSON.h" #includeint main() { char* json_str = "{\"name\":\"小明\", \"age\":18}"; // 定義一個JSON字符串 cJSON *root = cJSON_Parse(json_str); // 解析JSON字符串 cJSON *name = cJSON_GetObjectItem(root, "name"); // 獲取"name"節(jié)點的值 cJSON *age = cJSON_GetObjectItem(root, "age"); // 獲取"age"節(jié)點的值 printf("%s今年%d歲\n", name->valuestring, age->valueint); // 打印結果 cJSON_Delete(root); // 釋放內存 return 0; }
在上面的代碼中,我們定義了一個JSON字符串,并使用cJSON_Parse函數(shù)將其解析成一個cJSON對象。然后,我們使用cJSON_GetObjectItem函數(shù)獲取cJSON對象中"name"和"age"節(jié)點的值,并打印結果。最后,我們使用cJSON_Delete函數(shù)釋放內存。
接下來,我們來看看如何將C語言中的結構體轉換成JSON字符串。
#include "cJSON.h" #include// 定義一個學生結構體 typedef struct student { char name[20]; int age; char gender[10]; } Student; int main() { Student s = {"小紅", 20, "女"}; // 定義一個學生結構體 cJSON *root = cJSON_CreateObject(); // 創(chuàng)建一個JSON對象 cJSON_AddStringToObject(root, "name", s.name); // 向JSON對象中添加"name"節(jié)點 cJSON_AddNumberToObject(root, "age", s.age); // 向JSON對象中添加"age"節(jié)點 cJSON_AddStringToObject(root, "gender", s.gender); // 向JSON對象中添加"gender"節(jié)點 char* json_str = cJSON_Print(root); // 將JSON對象轉換成JSON字符串 printf("%s\n", json_str); // 打印結果 cJSON_Delete(root); // 釋放內存 free(json_str); // 釋放內存 return 0; }
在上面的代碼中,我們定義了一個學生結構體,并使用cJSON_CreateObject函數(shù)創(chuàng)建一個JSON對象。然后,使用cJSON_AddStringToObject和cJSON_AddNumberToObject函數(shù)向JSON對象中添加節(jié)點,最后使用cJSON_Print函數(shù)將JSON對象轉換成JSON字符串并打印結果。
以上就是關于如何在C語言中調用JSON的一些基礎內容。cJSON庫還有很多其他的函數(shù)可以使用,讀者可以根據(jù)自己的需要進行調用。