C JSON開源包是一個(gè)輕量、靈活且高性能的Json解析工具,它包含了3個(gè)基本部分:解析器、生成器和JSON對(duì)象控制。
#include <stdio.h> #include <cJSON.h> int main() { cJSON *root = cJSON_CreateObject(); // 創(chuàng)建一個(gè)JSON對(duì)象 cJSON_AddStringToObject(root, "name", "John"); // 添加一個(gè)鍵值對(duì) cJSON_AddNumberToObject(root, "age", 28); cJSON_Print(root); // 將JSON對(duì)象輸出到控制臺(tái) return 0; }
使用cJSON生成一個(gè)JSON對(duì)象非常簡(jiǎn)單,只需要先創(chuàng)建一個(gè)空對(duì)象,然后通過cJSON_AddXxxToObject方法向其添加鍵值對(duì)。其中的Xxx指的是數(shù)據(jù)類型,比如字符串(String)、數(shù)字(Number)等等。還可以使用cJSON_CreateXxx等方法來創(chuàng)建指定類型的JSON對(duì)象或數(shù)據(jù)。
解析JSON數(shù)據(jù)同樣簡(jiǎn)單,只需要使用cJSON_Parse函數(shù),將待解析的JSON字符串作為參數(shù)傳入即可。然后通過cJSON_GetObjectItem等方法獲取JSON對(duì)象的鍵值對(duì)。值得一提的是,在使用完JSON對(duì)象后,要使用cJSON_Delete方法將其釋放。
C JSON開源包還支持?jǐn)?shù)組和嵌套等復(fù)雜的JSON結(jié)構(gòu),使用起來非常靈活方便。
#include <stdio.h> #include <cJSON.h> int main() { char *json_str = "{\"name\":\"John\",\"age\":28,\"grades\":[{\"math\":90,\"english\":85},{\"math\":80,\"english\":75}]}"; cJSON *root = cJSON_Parse(json_str); // 解析JSON字符串 cJSON *grades = cJSON_GetObjectItem(root, "grades"); // 獲取名為“grades”的鍵值 cJSON *math = cJSON_GetObjectItem(cJSON_GetArrayItem(grades, 0), "math"); // 獲取數(shù)組第一個(gè)元素的鍵值“math” int score = cJSON_GetNumberValue(math); // 將數(shù)字類型的值轉(zhuǎn)換為整型 printf("His math score is %d.\n", score); cJSON_Delete(root); // 釋放JSON對(duì)象 return 0; }
總體來說,C JSON開源包是一款十分實(shí)用、易用的Json解析工具,不僅提供了基礎(chǔ)的解析和生成功能,還支持復(fù)雜的Json結(jié)構(gòu)。在編寫中小型Json處理程序時(shí),它是一個(gè)很好的選擇。