在當前的 Web 開發中,使用 JSON 作為數據交換格式已經是一種主流。而在 C 語言中,要想把 JSON 數據解析出來,需要使用專業的 JSON 庫,例如 cJSON。
首先需要下載 cJSON 庫的源碼,解壓并將其文件夾復制到工程目錄中。以 macOS 系統為例,這里使用 gcc 編譯器進行編譯。
$ gcc -c cJSON.c -o cJSON.o
接下來就可以在 C 代碼中引入 cJSON 庫,并調用其中的函數來解析 JSON 字符串了。下面是一個簡單的示例代碼:
#include "cJSON.h" #include <stdio.h> void parse_json(char *json_str) { cJSON *json = cJSON_Parse(json_str); if (json == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { cJSON *name = cJSON_GetObjectItem(json, "name"); cJSON *age = cJSON_GetObjectItem(json, "age"); cJSON *isMale = cJSON_GetObjectItem(json, "is_male"); printf("name: %s\n", name->valuestring); printf("age: %d\n", age->valueint); printf("is_male: %d\n", isMale->valueint); cJSON_Delete(json); } } int main() { char *json_str = "{\"name\": \"Jack\", \"age\": 18, \"is_male\": true}"; parse_json(json_str); return 0; }
上面的代碼中,parse_json() 函數用來解析 JSON 字符串,其中 cJSON_Parse() 函數返回一個 cJSON 對象,用來表示解析后的 JSON 數據。而 cJSON_GetObjectItem() 函數用來獲取 cJSON 對象中的某個屬性值,例如這里獲取了 name、age 和 is_male 三個屬性的值。最后使用 cJSON_Delete() 函數釋放 cJSON 對象。
以上就是 C 語言如何獲取 JSON 字符串的方法。如果需要將 C 語言中的數據轉化為 JSON 字符串,則需要使用 cJSON_CreateObject()、cJSON_AddStringToObject()、cJSON_AddNumberToObject() 等函數來創建 cJSON 對象,并使用 cJSON_Print() 函數將其轉化為 JSON 字符串。