在C語言中,使用json解析庫解析json格式的數(shù)據(jù)非常常見。常用的json解析庫有Jansson、cJSON、yajl等,在這里我們以cJSON為例,來介紹如何使用C語言調(diào)用json解析庫。
#include#include"cJSON.h" int main() { //定義要解析的json字符串 const char* json_str = "{\"name\":\"Tom\",\"age\":18,\"hobby\":[\"reading\",\"swimming\"]}"; //解析json字符串 cJSON* root = cJSON_Parse(json_str); //解析錯(cuò)誤處理 if (root == NULL) { printf("JSON Error: %s\n", cJSON_GetErrorPtr()); return 0; } //獲取字符串 char* name = cJSON_GetObjectItem(root, "name")->valuestring; printf("Name: %s\n", name); //獲取整型 int age = cJSON_GetObjectItem(root, "age")->valueint; printf("Age: %d\n", age); //獲取數(shù)組 cJSON* hobby_array = cJSON_GetObjectItem(root, "hobby"); int hobby_count = cJSON_GetArraySize(hobby_array); printf("Hobby:\n"); for (int i = 0; i < hobby_count; i++) { cJSON* hobby_item = cJSON_GetArrayItem(hobby_array, i); printf("%s\n", hobby_item->valuestring); } //釋放內(nèi)存 cJSON_Delete(root); return 0; }
在上面的代碼中,首先我們定義了一個(gè)json格式的字符串,然后使用cJSON_Parse函數(shù)將其解析成一個(gè)cJSON對(duì)象。如果解析成功,則可以通過函數(shù)cJSON_GetObjectItem獲取該對(duì)象中的成員,包括字符串、整型、數(shù)組等。解析結(jié)束后,需要使用函數(shù)cJSON_Delete釋放對(duì)象的內(nèi)存。