struct2json は、オープン ソースの C 構造体と JSON 高速相互変換ライブラリであり、構造体オブジェクトとJSON オブジェクト間のシリアル化と逆シリアル化の要件を迅速に実現できます。高速かつ簡潔な API 設計により、JSON 解析ライブラリを直接使用してこのような関数を実装する場合のコードの複雑さが大幅に軽減されます。
オブジェクト指向設計を C 言語に適用することは、現在非常に人気のある設計アイデアです。 C 言語にはクラスが存在しないため、一般的に構造体struct
がクラスとして使用され、構造体変数はオブジェクトになります。オブジェクトを取得した後、多くの場合、オブジェクトのシリアル化と逆シリアル化を考慮する必要があります。多くの高級言語とは異なり、C 言語にはリフレクションなどのメカニズムがあり、オブジェクトのシリアル化と逆シリアル化がネイティブにサポートされています。
C 言語の場合、JSON 文字列にシリアル化するのが適切な選択であるため、cJSON などの JSON 解析ライブラリを使用する必要があります。ただし、使用後のコードは冗長でロジックが不十分であるため、cJSON の二次カプセル化を考え出しました。実装するライブラリ 構造体とJSON間の高速変換を行うためのライブラリ。ここで struct2json が誕生しました。 struct2json の主な使用シナリオは次のとおりです。
2 つの構造体は次のように宣言されます。構造体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|コーディング) への皆さんを歓迎します。このオープンソース プロジェクトが素晴らしいと思われる場合は、プロジェクトのホームページの右上隅にあるスターをクリックして、必要としているより多くの友人に勧めてください。
具体的な内容については、 docszh
下のファイルを参照してください。使用する前に必ずドキュメントをお読みください。
MIT 著作権 (c) [email protected]