使用 C 語言讀寫 JSON 是一種廣泛用于數據交換的方式。JSON(JavaScript 對象標記)是一種輕量級數據交換格式,通常用于 API、配置文件和數據傳輸。在 C 語言中讀寫 JSON 可以使用一些第三方庫,例如 cJSON、json-c 等。
#include <stdio.h> #include <cjson/cJSON.h> int main() { char* json_string = "{\"name\": \"小明\", \"age\": 18, \"gender\": \"男\"}"; cJSON* root = cJSON_Parse(json_string); if (root == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON* name = cJSON_GetObjectItem(root, "name"); if (cJSON_IsString(name)) { printf("name: %s\n", name->valuestring); } cJSON* age = cJSON_GetObjectItem(root, "age"); if (cJSON_IsNumber(age)) { printf("age: %d\n", age->valueint); } cJSON* gender = cJSON_GetObjectItem(root, "gender"); if (cJSON_IsString(gender)) { printf("gender: %s\n", gender->valuestring); } cJSON_Delete(root); return 0; }
上述代碼介紹了如何解析一個 JSON 字符串,并獲取其中的鍵值對。cJSON_Parse() 函數用于將 JSON 字符串解析為一個 cJSON 對象,可以使用 cJSON_GetObjectItem() 函數獲取其中的鍵值對。如果鍵值對的值是字符串或數字,可以使用 cJSON_IsString() 和 cJSON_IsNumber() 判斷類型,然后使用 valuestring 或 valueint 屬性獲取值。最后,使用 cJSON_Delete() 函數釋放 cJSON 對象。
在寫 JSON 時,也可以使用 cJSON 庫。cJSON_CreateObject() 函數用于創建一個新的 cJSON 對象,cJSON_AddStringToObject() 和 cJSON_AddNumberToObject() 函數用于向 cJSON 對象中添加鍵值對。使用 cJSON_PrintUnformatted() 函數可以將 cJSON 對象打印為 JSON 字符串。
#include <stdio.h> #include <cjson/cJSON.h> int main() { cJSON* root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "小明"); cJSON_AddNumberToObject(root, "age", 18); cJSON_AddStringToObject(root, "gender", "男"); char* json_string = cJSON_PrintUnformatted(root); printf("%s\n", json_string); free(json_string); cJSON_Delete(root); return 0; }
以上代碼介紹了如何使用 cJSON 庫創建一個 JSON 對象,并將其打印為 JSON 字符串。使用 cJSON_CreateObject() 函數創建 cJSON 對象,使用 cJSON_AddStringToObject() 和 cJSON_AddNumberToObject() 向 cJSON 對象中添加鍵值對。最后,使用 cJSON_PrintUnformatted() 函數將 cJSON 對象打印為 JSON 字符串。