JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于web應用程序之間的數據傳輸。在C語言中,可以使用第三方庫來解析JSON數據,其中比較常用的有cJSON。
接下來我們將使用cJSON來解析下面的JSON數據:
{ "name": "小明", "age": 18, "school": { "name": "清華大學", "address": "北京市海淀區" }, "hobby": ["籃球", "游泳", "編程"] }
首先,我們需要將JSON數據解析為一個cJSON對象。可以使用cJSON_Parse函數來實現:
cJSON* json = cJSON_Parse(json_data); if (json == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); }
其中,json_data是要解析的JSON數據。如果解析成功,則cJSON_Parse函數將返回一個cJSON對象,否則返回NULL。
接下來,可以通過cJSON_GetObjectItem函數獲取JSONObject中的屬性值:
char* name = cJSON_GetObjectItem(json, "name")->valuestring; int age = cJSON_GetObjectItem(json, "age")->valueint; cJSON* school = cJSON_GetObjectItem(json, "school"); char* school_name = cJSON_GetObjectItem(school, "name")->valuestring; char* school_address = cJSON_GetObjectItem(school, "address")->valuestring; cJSON* hobby = cJSON_GetObjectItem(json, "hobby"); int hobby_num = cJSON_GetArraySize(hobby); for (int i = 0; i< hobby_num; i++) { char* hobby_item = cJSON_GetArrayItem(hobby, i)->valuestring; }
上述代碼中,通過cJSON_GetObjectItem函數獲取cJSON對象中的屬性值,并用不同的類型(如valuestring、valueint)來獲取不同類型的屬性值。
另外,通過cJSON_GetArraySize和cJSON_GetArrayItem函數,可以獲取JSONArray的長度和元素值。
最后,需要注意釋放cJSON對象的內存空間:
cJSON_Delete(json);
以上就是在C語言中使用cJSON解析JSON數據的相關介紹,希望能對您有所幫助。