C JSON對象是一種輕量級的數據交換格式,它具有易讀、易寫、易解析的特點。JSON對象由鍵值對組成,以大括號{}包裹。鍵值對之間使用逗號,分隔,鍵名和鍵值之間使用冒號:分隔。JSON中的鍵名必須為字符串類型,鍵值可以是字符串、數字、布爾值、數組、對象等類型。
{ "name": "Lucy", "age": 25, "hobbies": ["reading", "running"], "job": { "company": "ABC Inc.", "position": "manager" } }
在C語言中,我們可以使用第三方庫cJSON來解析JSON對象。cJSON提供了一系列的API,包括創建JSON對象、解析JSON字符串、獲取JSON對象的值等等。
創建JSON對象:
cJSON *person = cJSON_CreateObject(); cJSON_AddStringToObject(person, "name", "Lucy"); cJSON_AddNumberToObject(person, "age", 25); cJSON_AddItemToObject(person, "hobbies", cJSON_CreateString("reading")); cJSON_AddItemToArray(cJSON_GetObjectItem(person, "hobbies"), cJSON_CreateString("running")); cJSON_AddItemToObject(person, "job", job = cJSON_CreateObject()); cJSON_AddStringToObject(job, "company", "ABC Inc."); cJSON_AddStringToObject(job, "position", "manager");
解析JSON字符串:
char *json_str = "{\"name\":\"Lucy\",\"age\":25,\"hobbies\":[\"reading\",\"running\"],\"job\":{\"company\":\"ABC Inc.\",\"position\":\"manager\"}}"; cJSON *person = cJSON_Parse(json_str);
獲取JSON對象的值:
char *name = cJSON_GetObjectItem(person, "name")->valuestring; int age = cJSON_GetObjectItem(person, "age")->valueint; cJSON *hobbies = cJSON_GetObjectItem(person, "hobbies"); for (int i = 0; i< cJSON_GetArraySize(hobbies); i++) { char *hobby = cJSON_GetArrayItem(hobbies, i)->valuestring; } cJSON *job = cJSON_GetObjectItem(person, "job"); char *company = cJSON_GetObjectItem(job, "company")->valuestring; char *position = cJSON_GetObjectItem(job, "position")->valuestring;
在C語言中,使用cJSON庫可以方便地解析JSON對象,實現數據交換功能。同時,注意在使用cJSON時需要注意內存管理,確保釋放不需要的JSON對象。