struct2json adalah struktur C open source dan pustaka interkonversi cepat JSON. Ia dapat dengan cepat mewujudkan persyaratan serialisasi dan deserialisasi antara objek struktur dan objek JSON . Desain API yang cepat dan ringkas sangat mengurangi kompleksitas kode saat menggunakan pustaka penguraian JSON secara langsung untuk mengimplementasikan fungsi tersebut.
Menerapkan desain berorientasi objek pada bahasa C merupakan ide desain yang sangat populer saat ini. Karena tidak ada kelas dalam bahasa C, struct
umumnya digunakan sebagai kelas, dan variabel struktur adalah objek. Setelah memiliki suatu objek, Anda sering kali perlu mempertimbangkan serialisasi dan deserialisasi objek tersebut. Tidak seperti banyak bahasa tingkat tinggi, bahasa C memiliki mekanisme seperti refleksi, sehingga serialisasi objek dan deserialisasi didukung secara asli.
Untuk bahasa C, membuat serial ke dalam string JSON adalah pilihan yang baik, jadi Anda harus menggunakan pustaka penguraian JSON seperti cJSON. Namun, kode setelah digunakan berlebihan dan memiliki logika yang buruk, jadi saya membuat enkapsulasi sekunder cJSON. perpustakaan untuk mengimplementasikan Perpustakaan untuk konversi cepat antara struct dan JSON. Di sinilah struct2json lahir. Berikut ini adalah skenario penggunaan utama struct2json:
Dua struktur dideklarasikan sebagai berikut. Struktur Hometown
merupakan substruktur dari struktur Student
/* 籍贯 */
typedef struct {
char name [ 16 ];
} Hometown ;
/* 学生 */
typedef struct {
uint8_t id ;
uint8_t score [ 8 ];
char name [ 10 ];
double weight ;
Hometown hometown ;
} Student ;
Sebelum digunakan (file sumber) | Setelah digunakan (file sumber) |
---|---|
Sebelum digunakan (file sumber) | Setelah digunakan (file sumber) |
---|---|
将头文件(eg:mc_usr_def.h)放在demoinc目录下;
执行generate_struct_defination.py,生成struct_defination.txt;
执行generate_s2j_code.py,根据结构体定义自动生成结构体与JSON互转代码:my_struct_2_json.c,my_struct_2_json.h;
该脚本支持的参数类型有 基本类型 和 结构体类型,enum和指针按int处理,不支持union和位域;
支持的数组类型:支持基本类型一维数组,结构体一维数组,字符二维数组(字符串数组)
cd demo
编译测试代码,gcc ../cJSON/cJSON.c ../struct2json/src/*.c ./*.c -I ../cJSON/ -I ../struct2json/inc/ -lm -DDEBUGS2J -g -o tests2j
测试 ./tests2j
查看output输出和生成的JSON样例文件struct_defination.json;
预期输出:*:strcmp:0 *:strcmp:0
*:json_cmp:1
Selamat datang semua orang untuk melakukan permintaan fork dan pull (Github|OSChina|Coding). Jika menurut Anda proyek sumber terbuka ini bagus, Anda dapat mengklik Bintang di sudut kanan atas beranda proyek dan merekomendasikannya kepada lebih banyak teman yang membutuhkan.
Untuk konten spesifik, silakan lihat file di bawah docszh
. Pastikan untuk membaca dokumentasi sebelum menggunakannya.
Hak Cipta MIT (c) [email protected]