struct2json عبارة عن بنية C مفتوحة المصدر ومكتبة JSON للتحويل السريع، ويمكنها تحقيق متطلبات التسلسل وإلغاء التسلسل بين كائنات البنية وكائنات JSON بسرعة. يعمل تصميم واجهة برمجة التطبيقات السريع والموجز على تقليل تعقيد التعليمات البرمجية بشكل كبير عند الاستخدام المباشر لمكتبة تحليل JSON لتنفيذ مثل هذه الوظائف.
يعد تطبيق التصميم الموجه للكائنات على لغة C فكرة تصميم شائعة جدًا في الوقت الحالي. نظرًا لعدم وجود فئات في لغة C، يتم استخدام struct
البنية بشكل عام كفئة، ومتغيرات البنية عبارة عن كائنات. بعد الحصول على كائن، غالبًا ما تحتاج إلى التفكير في تسلسل الكائن وإلغاء تسلسله. على عكس العديد من اللغات عالية المستوى، تتمتع لغة C بآليات مثل الانعكاس، بحيث يتم دعم تسلسل الكائنات وإلغاء التسلسل محليًا.
بالنسبة للغة C، يعد إجراء التسلسل إلى سلاسل JSON خيارًا جيدًا، لذلك يتعين عليك استخدام مكتبة تحليل JSON مثل cJSON، ومع ذلك، فإن الكود بعد الاستخدام زائد عن الحاجة وله منطق ضعيف، لذلك توصلت إلى تغليف ثانوي لـ cJSON. مكتبة لتنفيذ مكتبة للتحويل السريع بين البنية وJSON. هذا هو المكان الذي ولد فيه struct2json. فيما يلي سيناريوهات الاستخدام الرئيسية لـ struct2json:
تم الإعلان عن مبنيين على النحو التالي. هيكل Hometown
هو البنية التحتية للهيكل Student
/* 籍贯 */
typedef struct {
char name [ 16 ];
} Hometown ;
/* 学生 */
typedef struct {
uint8_t id ;
uint8_t score [ 8 ];
char name [ 10 ];
double weight ;
Hometown hometown ;
} Student ;
قبل الاستخدام (الملف المصدر) | بعد الاستخدام (الملف المصدر) |
---|---|
قبل الاستخدام (الملف المصدر) | بعد الاستخدام (الملف المصدر) |
---|---|
将头文件(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
مرحبًا بالجميع في طلب الشوكة والسحب (Github|OSChina|Coding). إذا كنت تعتقد أن هذا المشروع مفتوح المصدر رائع، فيمكنك النقر فوق "نجمة" في الزاوية اليمنى العليا من الصفحة الرئيسية للمشروع والتوصية به لمزيد من الأصدقاء المحتاجين.
للحصول على محتوى محدد، يرجى الرجوع إلى الملفات الموجودة ضمن docszh
. تأكد من قراءة الوثائق قبل استخدامه.
حقوق الطبع والنشر لمعهد ماساتشوستس للتكنولوجيا (ج) [email protected]