欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 結構體序列化成json

劉柏宏1年前7瀏覽0評論

C語言中,結構體是一種常用的數據類型,它可以存儲多個不同類型的數據。在很多場景下,我們需要將一個結構體序列化成JSON格式,便于在前后端之間傳遞數據。下面我們來看一下如何將C語言中的結構體序列化成JSON。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <jansson.h>
typedef struct {
int id;
char name[20];
bool is_male;
}Person;
int main(int argc, char *argv[]) {
Person p;
p.id = 1;
strcpy(p.name, "Tom");
p.is_male = true;
json_t *root = json_object();
json_object_set_new(root, "id", json_integer(p.id));
json_object_set_new(root, "name", json_string(p.name));
json_object_set_new(root, "is_male", json_boolean(p.is_male));
char *json_str = json_dumps(root, JSON_INDENT(2));
printf("%s\n", json_str);
free(json_str);
json_decref(root);  
return 0;
}

這里定義了一個Person結構體,包含id、name、is_male三個屬性。接下來使用json_object_set_new函數向一個json_t類型的對象中添加三個鍵值對,分別對應Person結構體的三個屬性,并使用json_dumps函數將該json_t對象序列化成JSON格式,并以兩個空格為縮進格式輸出。

在C語言中,使用第三方庫jansson可以方便地序列化JSON數據。json_t類型表示JSON值,包括對象、數組、字符串、數字、布爾值等。json_object_set_new函數用于向一個JSON對象中添加一個key-value對,其中key是一個字符串,value是一個json_t類型的值。

注意,輸出的JSON字符串需要在堆上分配內存,使用完需要手動釋放,因為json_dumps函數返回的指針是動態分配的。json_decref函數用于減小一個json_t對象的引用計數。

總之,結構體序列化成JSON是個常見的需求,在C語言中,使用jansson庫可以方便地實現。通過將結構體屬性轉換成JSON對象中的鍵值對,然后使用json_dumps函數序列化,可以得到格式良好的JSON字符串。