JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于前后端數據傳遞。在C語言中,可以通過第三方庫cJSON來解析和生成JSON格式的數據。cJSON支持基本數據類型如字符串、數字、布爾值等,還支持數組和對象。這里介紹一下如何使用cJSON處理復雜格式的JSON數據。
在cJSON中,對象是通過cJSON_CreateObject()函數創建的。對象中可以包含多個鍵值對,鍵和值可以是字符串、數字、布爾值等基本數據類型,也可以是數組或其他對象。
cJSON* obj = cJSON_CreateObject(); cJSON_AddItemToObject(obj, "name", cJSON_CreateString("json")); cJSON* arr = cJSON_CreateArray(); cJSON_AddItemToArray(arr, cJSON_CreateNumber(1)); cJSON_AddItemToArray(arr, cJSON_CreateNumber(2)); cJSON_AddItemToObject(obj, "array", arr);
上面的代碼中,我們創建了一個對象obj,包含一個字符串類型的鍵“name”和一個數組類型的鍵“array”。數組中包含兩個數字類型的元素1和2。如果要打印出這個對象的JSON格式,可以使用cJSON_Print()函數。
char* json_str = cJSON_Print(obj); printf("%s\n", json_str);
打印出來的JSON字符串如下:
{ "name": "json", "array": [1, 2] }
除了基本數據類型和數組、對象類型,cJSON還支持NULL和未定義類型,可以通過cJSON_CreateNull()和cJSON_CreateUndefined()函數來創建。
cJSON* obj = cJSON_CreateObject(); cJSON_AddItemToObject(obj, "null", cJSON_CreateNull()); cJSON_AddItemToObject(obj, "undefined", cJSON_CreateUndefined());
最終生成的JSON字符串如下:
{ "null": null, "undefined": undefined }
總結一下,cJSON可以處理復雜格式的JSON數據,提供了豐富的數據類型,并且易于使用。如果需要在C語言中處理JSON數據,cJSON是一個不錯的選擇。