1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        struct2jsonC 結(jié)構(gòu)體與 JSON 互轉(zhuǎn)庫

        聯(lián)合創(chuàng)作 · 2023-09-21 20:29

        struct2json 是一個開源的C結(jié)構(gòu)體與 JSON 快速互轉(zhuǎn)庫,它可以快速實現(xiàn) 結(jié)構(gòu)體對象 與 JSON 對象 之間序列化及反序列化要求??焖?、簡潔的 API 設(shè)計,大大降低直接使用 JSON 解析庫來實現(xiàn)此類功能的代碼復(fù)雜度。

        起源

        把面向?qū)ο笤O(shè)計應(yīng)用到C語言中,是當(dāng)下很流行的設(shè)計思想。由于C語言中沒有類,所以一般使用結(jié)構(gòu)體struct 充當(dāng)類,那么結(jié)構(gòu)體變量就是對象。有了對象之后,很多時候需要考慮對象的序列化及反序列化問題。C語言不像很多高級語言擁有反射等機制,使得對象序列化及反序列化被原生的支持。

        對于C語言來說,序列化為 JSON 字符串是個不錯的選擇,所以就得使用 cJSON 這類 JSON 解析庫,但是使用后的代碼冗余且邏輯性差,所以萌生對cJSON庫進(jìn)行二次封裝,實現(xiàn)一個 struct 與 JSON 之間快速互轉(zhuǎn)的庫。 struct2json 就誕生于此。下面是 struct2json 主要使用場景:

        • 持久化 :結(jié)構(gòu)體對象序列化為 JSON 對象后,可直接保存至文件、Flash,實現(xiàn)對結(jié)構(gòu)體對象的掉電存儲;
        • 通信 :高級語言對JSON支持的很友好,例如: Javascript、Groovy 就對 JSON 具有原生的支持,所以 JSON 也可作為C語言與其他語言軟件之間的通信協(xié)議格式及對象傳遞格式;
        • 可視化 :序列化為 JSON 后的對象,可以更加直觀的展示到控制臺或者 UI 上,可用于產(chǎn)品調(diào)試、產(chǎn)品二次開發(fā)等場景;

        如何使用

        聲明結(jié)構(gòu)體

        如下聲明了兩個結(jié)構(gòu)體,結(jié)構(gòu)體 Hometown 是結(jié)構(gòu)體 Student 的子結(jié)構(gòu)體

        /* 籍貫 */
        typedef struct {
            char name[16];
        } Hometown;
        
        /* 學(xué)生 */
        typedef struct {
            uint8_t id;
            uint8_t score[8];
            char name[10];
            double weight;
            Hometown hometown;
        } Student;

        將結(jié)構(gòu)體對象序列化為 JSON 對象

        使用前(源文件 使用后(源文件

        將 JSON 對象反序列化為結(jié)構(gòu)體對象

        使用前(源文件 使用后(源文件

        歡迎大家 fork and pull request(Github|OSChina) 。如果覺得這個開源項目很贊,可以點擊項目主頁 右上角的Star,同時把它推薦給更多有需要的朋友。

        文檔

        具體內(nèi)容參考\docs\zh\下的文件。務(wù)必保證在 閱讀文檔 后再使用。

        許可

        MIT Copyright (c) [email protected]

        瀏覽 23
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            少妇诱惑图 | 好紧h宝贝nph | 欧美三根一起进三p视频 | 午夜福利激情视频 | 国产愉拍91九色国产愉拍 | 成人午夜爽爽爽 | 成人免费精品视频 | 精品无码一区二区人妻久久蜜桃 | 日本不卡二区 | 淫片免费观看视频直播 |