在c語言程序中,常常需要將數據以json格式返回給接口請求方。而如何實現c程序返回json數據呢?這里推薦一個非常方便的庫——cJSON。
cJSON是一個輕量級的JSON解析器和生成器,可以很方便地將c語言數據轉換為json格式,也可以將json格式數據轉換為c語言數據。
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> int main() { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 20); cJSON_AddItemToObject(root, "hobby", cJSON_CreateArray()); cJSON_AddStringToArray(cJSON_GetObjectItem(root, "hobby"), "籃球"); cJSON_AddStringToArray(cJSON_GetObjectItem(root, "hobby"), "游泳"); char *json_str = cJSON_Print(root); printf("%s\n", json_str); cJSON_Delete(root); return 0; }
上述代碼中,我們使用cJSON庫創建了一個json對象root,并向該對象中添加了三個屬性,分別是一個name字符串、一個age數字和一個hobby數組。最后調用cJSON_Print函數將該對象轉換為json格式的字符串輸出。
當然,我們也可以將從請求中獲取到的json格式字符串轉換為c語言數據:
char *json_str = "{\"name\":\"張三\",\"age\":20,\"hobby\":[\"籃球\",\"游泳\"]}"; cJSON *root = cJSON_Parse(json_str); printf("%s\n", cJSON_GetObjectItem(root, "name")->valuestring); printf("%d\n", cJSON_GetObjectItem(root, "age")->valueint); int hobby_size = cJSON_GetArraySize(cJSON_GetObjectItem(root, "hobby")); for (int i = 0; i < hobby_size; i++) { printf("%s\n", cJSON_GetArrayItem(cJSON_GetObjectItem(root, "hobby"), i)->valuestring); } cJSON_Delete(root);
以上代碼中,我們將一個json格式的字符串手動編寫并賦值給json_str變量,然后使用cJSON_Parse函數將其解析為一個cJSON對象root,并從該對象中獲取name、age和hobby屬性的值,并輸出到控制臺上。
總的來說,cJSON是一個十分方便的json解析和生成庫,在c語言程序中經常被用來處理json數據。希望讀者在開發c語言程序的時候,也能好好利用這個強大的工具。