在Json字符串中取值是C語言開發(fā)者經(jīng)常需要處理的問題。Json(JavaScript Object Notation)是一種常用的數(shù)據(jù)格式,被廣泛應用于Web開發(fā)中的數(shù)據(jù)傳輸和存儲。在C語言中,json字符串是以字符串的形式存在的,其中包含了各種數(shù)據(jù)類型,如:字符串、數(shù)字、數(shù)組和對象等等。要使用C語言對json字符串進行解析及其取值,需要使用到第三方庫,比如Jansson和cJSON等。
#include "cJson.h" int main() { const char* json_string = "{\"name\":\"Tom\",\"age\":20,\"company\":{\"name\":\"Google\",\"address\":\"California\"}}"; //使用cJSON解析json字符串 cJSON* root = cJSON_Parse(json_string); if (root != NULL) { //從json對象中取值 char* name = cJSON_GetObjectItem(root, "name")->valuestring; int age = cJSON_GetObjectItem(root, "age")->valueint; cJSON* company = cJSON_GetObjectItem(root, "company"); //從json對象中嵌套取值 char* company_name = cJSON_GetObjectItem(company, "name")->valuestring; char* company_address = cJSON_GetObjectItem(company, "address")->valuestring; //輸出取得的值 printf("Name: %s\n", name); printf("Age: %d\n", age); printf("Company Name: %s\n", company_name); printf("Company Address: %s\n", company_address); //釋放json對象的內(nèi)存 cJSON_Delete(root); } return 0; }
通過上方這段示例代碼,可以看出cJSON庫的使用方式。使用cJSON_Parse函數(shù)來解析json字符串,然后使用cJSON_GetObjectItem函數(shù)從json對象中取出相應的值。當json對象中出現(xiàn)嵌套的情況時,可通過嵌套取值的方式來獲取對應的值。最后,使用cJSON_Delete函數(shù)的方式釋放內(nèi)存。