CJSON是一種輕量級的數據交換格式,而cJSON也是一個非常流行的解析JSON的庫。cJSON是用C語言編寫的,可以在大多數平臺上運行,因此在許多項目中被廣泛使用。
要解析JSON字符串,程序必須能夠讀取和識別JSON格式。cJSON提供了很多函數來讀取JSON字符串以及將它們轉化為對應類型的數據類型。以下是使用cJSON解析JSON字符串的代碼樣例:
#include <stdio.h> #include <cJSON.h> int main(void) { char *jsonstr = "{\"name\":\"張三\",\"age\":20}"; cJSON *json , *name , *age; json = cJSON_Parse(jsonstr); if (!json) { printf("Error before: [%s]\n",cJSON_GetErrorPtr()); return -1; } name = cJSON_GetObjectItem(json , "name"); age = cJSON_GetObjectItem(json , "age"); printf("name: %s\n" , name ->valuestring); printf("age:%d\n", age ->valueint); cJSON_Delete(json); return 0; }
代碼中首先使用cJSON_Parse()函數將JSON字符串轉換為cJSON對象。如果JSON字符串格式不正確,此函數將返回NULL并在cJSON_GetErrorPtr()函數中返回錯誤信息。在這個例子中,JSON對象包含了“name”和“age”兩個屬性。因此,可以使用cJSON_GetObjectItem()函數獲取這兩個屬性對象的指針。對于字符串屬性,可以使用valuestring成員獲取字符串值;對于數值屬性,可以使用valueint成員獲取整數值。最后,使用cJSON_Delete()函數釋放cJSON對象的內存。
總的來說,使用cJSON解析JSON字符串是一個相對簡單的過程。它提供了幾個簡單的函數,可以輕松地將任何合法的JSON字符串轉換為cJSON對象,并通過使用valuestring和valueint成員訪問屬性。