最近,在我的 C 編程項目中,我需要從前端發送來的 JSON 數據庫中提取數據。 在一開始,我不知道該如何完成這個任務。然而,經過一些研究和實驗,我終于找到了解決方案。
首先,我需要使用 HTTP 或 HTTPS 協議從前端獲取 JSON 數據。 在我的程序中,我使用了 curl 庫來進行這一步驟。下面是相應的代碼片段:
// 初始化 curl CURL *curl; curl = curl_easy_init(); // 設置 URL curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/json"); // 在內存中存儲響應 struct Response response; response.memory = malloc(1); response.size = 0; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&response); // 執行請求 CURLcode res; res = curl_easy_perform(curl); // 判斷請求是否成功 if (res != CURLE_OK) { printf("HTTP request failed: %s\n", curl_easy_strerror(res)); return 1; } // 釋放 curl curl_easy_cleanup(curl);
一旦我成功地獲取了 JSON 數據,我就需要解析它。 在我的項目中,我使用了 cJSON 庫來進行 JSON 解析。這是一款非常易于使用且功能強大的庫。下面是一個簡單的示例:
// 解析 JSON 數據 cJSON *root = cJSON_Parse(response.memory); // 檢查解析是否成功 if (!root) { printf("Failed to parse JSON.\n"); return 1; } // 從 JSON 數據中獲取值 cJSON *name = cJSON_GetObjectItem(root, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("Name: %s\n", name->valuestring); } // 釋放 cJSON cJSON_Delete(root);
通過上述步驟,我成功地從前端的 JSON 數據庫中提取了所需的數據。現在,我可以繼續開發我的 C 項目了。