c 是一種強(qiáng)大的編程語(yǔ)言,它可以很容易地處理 json 字符串。在 Web 開(kāi)發(fā)中,json 字符串是一種流行的數(shù)據(jù)傳輸格式。本文將探討如何使用 c 處理 json 字符串。
在 c 中處理 json 字符串,我們需要使用一個(gè) json 庫(kù)。一個(gè)著名的 json 庫(kù)是 cJSON,它可以在 Github 上下載。它提供了豐富的 api,可以方便地對(duì) json 字符串進(jìn)行解析,構(gòu)建和修改。
#include "cJSON.h" #include <stdio.h> int main() { char* json_string = "{\"name\" : \"John Smith\", \"age\" : 30}"; // 解析 json 字符串 cJSON* json = cJSON_Parse(json_string); if (json == NULL) { printf("Failed to parse json string!\n"); return 1; } // 從 json 對(duì)象中獲取值 cJSON* name = cJSON_GetObjectItemCaseSensitive(json, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("Name: %s\n", name->valuestring); } cJSON* age = cJSON_GetObjectItemCaseSensitive(json, "age"); if (cJSON_IsNumber(age)) { printf("Age: %d\n", age->valueint); } // 構(gòu)建 json 對(duì)象 cJSON* new_json = cJSON_CreateObject(); if (new_json == NULL) { printf("Failed to create json object!\n"); return 1; } cJSON_AddStringToObject(new_json, "name", "Alice"); cJSON_AddNumberToObject(new_json, "age", 25); char* new_json_string = cJSON_Print(new_json); printf("New Json: %s\n", new_json_string); // 釋放 json 對(duì)象和字符串 cJSON_Delete(json); cJSON_Delete(new_json); free(new_json_string); return 0; }
在上面的示例代碼中,我們首先定義了一個(gè) json 字符串,并使用 cJSON_Parse 函數(shù)解析了該字符串。我們?nèi)缓笫褂?cJSON_GetObjectItemCaseSensitive 函數(shù)從 json 對(duì)象中獲取值,并打印出來(lái)。
接下來(lái),我們構(gòu)建一個(gè)新的 json 對(duì)象,并使用 cJSON_AddStringToObject 和 cJSON_AddNumberToObject 函數(shù)將一個(gè)字符串和一個(gè)數(shù)字添加到該對(duì)象中。最后,我們使用 cJSON_Print 將該對(duì)象轉(zhuǎn)換為字符串并打印出來(lái)。
最后,我們使用 cJSON_Delete 和 free 函數(shù)釋放了 json 對(duì)象和字符串。