面對頻繁的數據交互需求,用最簡方式實現JSON序列化與反序列化已成為開發者必備技能,借助主流庫,輕松實現零負擔數據轉換。
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于人類閱讀和編寫,同時也易于機器解析和生成。JSON雖源自JavaScript編程語言的子集,但其獨立于語言,已廣泛用于不同編程環境與系統之中。
在嵌入式開發中,高效、可靠的JSON解析與生成功能對于設備與云端或其他系統之間的數據交互至關重要。為此,LuatOS提供了json核心庫——無需額外依賴,即可快速實現JSON數據的生成(序列化)與解析(反序列化)。
目前json庫已全面支持LuatOS開發系列模組,開發者可根據項目實際需求,靈活選用并進行快速集成與開發。
一、JSON基礎要點
在LuatOS開發中,使用以下兩個函數高效處理JSON數據。
API文檔詳見:https://docs.openluat.com/osapi/core/json/
1.1 兩個關鍵函數
1)json.encode(obj,t)
功能是將Lua對象序列化為符合JSON格式的字符串。
注意事項:obj參數僅支持字符串、數字、布爾值、表、nil類型作為輸入,不支持函數、用戶數據、線程和非空輕量級用戶數據。
序列化成功示例:

序列化失敗示例:

2)json.decode(str)功能是將符合JSON格式的字符串反序列化為Lua對象。
注意事項:輸入字符串必須是合法的JSON文本,否則會解析失敗;成功時返回反序列化結果和狀態碼1,失敗時返回nil、狀態碼false和錯誤信息。
反序列化成功示例:

反序列化失敗示例:

1.2 JSON常用場景
JSON因其簡潔、通用且靈活的特性,被廣泛應用于配置文件、網絡通信和數據存儲等場景。
1)配置文件:
用于應用程序的配置設置。許多工具和框架都直接使用.json文件來管理配置,因為它結構清晰、易于編輯。
2)網絡通信:
用于客戶端與服務器之間的數據交換。在前后端分離的開發中,JSON是API接口請求和響應的標準數據格式。
3)數據存儲:
用于存儲簡單的數據結構。對于一些結構簡單的數據,直接將其存儲為JSON文件,或在數據庫中使用JSON類型字段,都是非常方便的做法。
二、JSON應用示例demo
我們提供了豐富的應用示例與實操教程,系統演示JSON序列化與反序列化的各項功能,幫助開發者快速上手。
以Air780EGH核心板為例
2.1 序列化示例
將Lua對象轉為JSON字符串,涵蓋以下核心要點:
示例一:Lua string轉為JSON string;
示例二:Lua number轉為JSON string;
示例三:Lua boolean轉為JSON string;
示例四:Lua table轉為JSON string;
示例五:Lua nil轉為JSON string;
序列化失敗示例和指定浮點數示例。
核心代碼如下圖示,完整demo詳見源碼倉庫最新文件:

2.2 反序列化示例
將JSON字符串轉為Lua對象,涵蓋以下核心要點:
示例一:JSON string轉為Lua string;
示例二:JSON number轉為Lua number;
示例三:JSON boolean轉為Lua boolean;
示例四:JSON table轉為Lua table;
示例五:JSON nil轉為Lua nil;
反序列化失敗示例;
空表(empty table)轉換為JSON時的說明;
字符串中包含控制字符(如 \r\n)的JSON序列化與反序列化說明;
json.null 的語義與比較行為說明。
核心代碼如下圖示,完整demo詳見源碼倉庫最新文件:

今天的內容就分享到這里了~
-
單片機
+關注
關注
6076文章
45494瀏覽量
670262 -
物聯網
+關注
關注
2945文章
47818瀏覽量
414828 -
硬件工程
+關注
關注
1文章
228瀏覽量
10737 -
嵌入式硬件
+關注
關注
1文章
1011瀏覽量
9242
發布評論請先 登錄
如何使用Serde進行序列化和反序列化
怎么支持PIC32中的JSON解析和序列化
Java序列化的機制和原理
Virtex ISERDES_NODELAY對快速4線總線進行反序列化怎么實現?
SpringMVC JSON框架的自定義序列化與反序列化
java序列化和反序列化范例和JDK類庫中的序列化API
什么是序列化 為什么要序列化
如何用C語言進行json的序列化和反序列化
Spring Boot時配置JSON序列化選項的幾種方法
Java序列化怎么使用
極簡代碼,搞定JSON序列化與反序列化
JSON:簡潔代碼高效搞定序列化與反序列化
評論