C 結構體與 JSON 互轉庫 ,struct2json V1.0 發布
struct2json 是一個開源的C結構體與 JSON 快速互轉庫,它可以快速實現 結構體對象 與 JSON 對象 之間序列化及反序列化要求。快速、簡潔的 API 設計,大大降低直接使用 JSON 解析庫來實現此類功能的代碼復雜度。
起源
把 面向對象設計應用到C語言中,是當下很流行的設計思想。由于C語言中沒有類,所以一般使用結構體struct 充當類,那么結構體變量就是對象。有了對象 之后,很多時候需要考慮對象的序列化及反序列化問題。C語言不像很多高級語言擁有反射等機制,使得對象序列化及反序列化被原生的支持。
對于 C語言來說,序列化為 JSON 字符串是個不錯的選擇,所以就得使用 cJSON 這類 JSON 解析庫,但是使用后的代碼冗余且邏輯性差,所以萌生對cJSON庫進行二次封裝,實現一個 struct 與 JSON 之間快速互轉的庫。 struct2json 就誕生于此。下面是 struct2json 主要使用場景:
-
持久化 :結構體對象序列化為 JSON 對象后,可直接保存至文件、Flash,實現對結構體對象的掉電存儲;
</li> -
通信 :高級語言對JSON支持的很友好,例如: Javascript、Groovy 就對 JSON 具有原生的支持,所以 JSON 也可作為C語言與其他語言軟件之間的通信協議格式及對象傳遞格式;
</li> -
可視化 :序列化為 JSON 后的對象,可以更加直觀的展示到控制臺或者 UI 上,可用于產品調試、產品二次開發等場景;
</li> </ul>如何使用
聲明結構體
如下聲明了兩個結構體,結構體 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;</pre>
將結構體對象序列化為 JSON 對象
使用前(源文件) 使用后(源文件) </tr> </tbody>
</tr> </tbody> </table>
將 JSON 對象反序列化為結構體對象
使用前(源文件) 使用后(源文件) </tr> </tbody>
</tr> </tbody> </table>
來自:https://github.com/armink/struct2json本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!相關資訊
相關經驗
sesese色