C JSON節點獲取
JSON是一個輕量級的數據交換格式,使用起來簡單方便。在C語言中,我們需要使用JSON庫來進行JSON文件的讀取和解析,常用的庫有cJSON和Jansson。
在使用cJSON庫時,我們需要先將JSON文件讀取進來,然后通過cJSON_Parse()函數解析成cJSON類型的節點樹。接下來,我們可以通過cJSON_GetObjectItem()函數獲取節點樹中的子節點。
cJSON *root = cJSON_Parse(json_string); if (root != NULL) { cJSON *name = cJSON_GetObjectItem(root, "name"); if (name != NULL) { printf("%s\n", name->valuestring); } }
上面的代碼中,我們使用cJSON_Parse()函數將JSON字符串解析成cJSON類型的根節點root,然后使用cJSON_GetObjectItem()函數獲取子節點name,再通過valuestring成員獲取該節點的值。
除了獲取子節點,我們還可以通過cJSON_GetArrayItem()函數獲取數組類型的子節點。
cJSON *root = cJSON_Parse(json_string); if (root != NULL) { cJSON *array = cJSON_GetObjectItem(root, "array"); if (array != NULL) { int size = cJSON_GetArraySize(array); for (int i = 0; i< size; i++) { cJSON *item = cJSON_GetArrayItem(array, i); printf("%s\n", item->valuestring); } } }
上面的代碼中,我們使用cJSON_Parse()函數將JSON字符串解析成cJSON類型的根節點root,然后使用cJSON_GetObjectItem()函數獲取數組類型的子節點array,再通過cJSON_GetArraySize()函數獲取數組大小,循環使用cJSON_GetArrayItem()函數獲取數組中的元素。
總的來說,cJSON庫提供了一組方便的函數,可以方便地獲取JSON節點的值。使用cJSON庫解析JSON文件時,需要注意內存泄漏問題。