在進行網絡通信或與數(shù)據庫交互時,我們經常需要將C語言中的數(shù)據結構轉換成JSON串格式。JSON(JavaScript Object Notation)是一種輕量級的數(shù)據交換格式,易于閱讀和編寫,并可輕松轉換為各種編程語言的數(shù)據類型。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> typedef struct { char *name; int age; char **hobbies; } person; int main() { // 創(chuàng)建person結構體并初始化數(shù)據 person p; p.name = "小明"; p.age = 25; p.hobbies = malloc(sizeof(char*)*3); p.hobbies[0] = "籃球"; p.hobbies[1] = "游泳"; p.hobbies[2] = "攝影"; // 將person結構體轉換為JSON串格式 json_t *root = json_object(); json_object_set_new(root, "name", json_string(p.name)); json_object_set_new(root, "age", json_integer(p.age)); json_t *hobbies = json_array(); for(int i=0; i<3; i++) { json_array_append_new(hobbies, json_string(p.hobbies[i])); } json_object_set_new(root, "hobbies", hobbies); char *json_str = json_dumps(root, JSON_ENCODE_ANY); printf("%s\n", json_str); // 釋放內存 json_decref(root); free(p.hobbies); free(json_str); return 0; }
在上面的代碼中,我們首先定義了一個person結構體,并初始化了其數(shù)據。然后使用jansson庫中的函數(shù),將其轉換為JSON串格式,并通過json_dumps()函數(shù)將其輸出到控制臺上。
其中,json_object_set_new()函數(shù)用于向JSON對象中添加鍵值對,json_string()和json_integer()分別用于將字符串和整數(shù)類型轉換為JSON數(shù)據類型,json_array()用于創(chuàng)建JSON數(shù)組。
最后我們需要注意在程序結束時釋放內存。