JSON(JavaScript Object Notation)是用于數(shù)據(jù)交換的一種輕量級的文本格式。由于其簡單性和可讀性,它已經(jīng)成為現(xiàn)代應用程序中最常用的數(shù)據(jù)格式之一。
C標準庫中的json解析器 - cJSON,是一個輕量級的、可移植的、快速的C語言庫,用于解析JSON數(shù)據(jù)。cJSON是一個單文件庫,易于集成到任何C項目中。
cJSON *cJSON_Parse(const char *json)
cJSON_Parse()函數(shù)通過解析字符串形式的JSON文本來創(chuàng)建一個cJSON對象。在解析過程中,它將檢索JSON文本中的元素存儲在cJSON結構中。如果該函數(shù)成功,則返回解析后JSON文本的根節(jié)點的指針。如果函數(shù)出錯,則返回NULL。
例如,以下是針對JSON文本的cJSON_Parse()函數(shù)的調用:
#include "cJSON.h" char *json_text = "{\"name\":\"John Smith\",\"age\":25}"; cJSON *root = cJSON_Parse(json_text);
在上面的示例中,JSON文本作為一個字符串傳遞給cJSON_Parse()函數(shù)。然后,將根據(jù)JSON文本創(chuàng)建一個cJSON對象,該對象的指針將存儲在root變量中。
cJSON *cJSON_GetObjectItem(const cJSON *object, const char *string)
cJSON_GetObjectItem()函數(shù)使用在該對象上指定的鍵查詢并返回相應的cJSON節(jié)點。例如,下面是使用cJSON_GetObjectItem()函數(shù)從上面示例中的root對象中獲取名為“name”的鍵的值:
cJSON *name = cJSON_GetObjectItem(root, "name"); char *name_value = name->valuestring;
在上面的示例中,“name”是JSON文本中的一個鍵,該鍵的值存儲在name_value變量中。同樣,可以使用cJSON_GetObjectItem()函數(shù)獲取任何其他鍵的值。
cJSON庫還提供了其他有用的功能,例如在JSON中添加或刪除元素、以及將cJSON節(jié)點串聯(lián)成多個JSON文檔。有關cJSON庫支持的全部操作,請參閱其官方文檔。