C JSON是一種通用數據交換格式,有時候我們需要過濾掉其中的某些數據項。C JSON提供了一些簡單的API,可以方便地實現該功能。
/* 例子 JSON 數據*/ { "name": "John Smith", "age": 35, "gender": "male", "address": { "street": "123 Main St.", "city": "Anytown", "state": "CA", "zip": "12345" }, "phone": [ { "type": "home", "number": "555-555-1234" }, { "type": "work", "number": "555-555-5678" } ] } /* 過濾掉 address 和 phone 數據項 */ { "name": "John Smith", "age": 35, "gender": "male" }
上述例子中,我們可以使用C JSON的API來訪問和操作JSON數據。為了過濾掉特定數據項,我們需要遍歷JSON數據并刪除需要過濾的數據。
具體實現方法如下:
void filter_json(cJSON *json, const char *key) { cJSON *item = NULL; cJSON *tmp = NULL; /* 遍歷 JSON 數據 */ cJSON_ArrayForEach(item, json) { if (cJSON_IsObject(item)) { /* 如果 JSON 數據項是對象 */ tmp = cJSON_GetObjectItemCaseSensitive(item, key); if (tmp != NULL) { /* 如果數據項名稱和需要過濾的名稱相同,刪除該項 */ cJSON_DeleteItemFromObject(item, key); } else { /* 否則繼續遞歸遍歷 JSON 數據 */ filter_json(item, key); } } else if (cJSON_IsArray(item)) { /* 如果 JSON 數據項是數組,遍歷其中的每個對象 */ cJSON_ArrayForEach(tmp, item) { /* 遞歸遍歷 JSON 對象 */ filter_json(tmp, key); } } } }
通過以上方法,我們可以輕松地實現C JSON的過濾功能。這種方法可以應用于各種JSON數據格式,以便精簡和簡化數據。