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详见源码仓库最新文件:

相关推荐
胖头鱼的鱼缸(尹海文)1 天前
胖头鱼的技术专栏-474 从能跑到能上线:PG SplitJSON 0.2.0 和 0.1.0 差在哪(20261008)
postgresql·json
?? Daisy2 天前
Claude Code 接入 GPT:settings.json 两种配置方法(2026-10)
gpt·json
小静AI工程实验室2 天前
Python 爬虫解析 JSON-LD:多块 script、@graph 与坏数据的 9 个边界
爬虫·python·json
goehou3 天前
LLM 结构化输出全解:从 Prompt 约束到 Schema 硬保证,三层实现怎么选
ai·llm·json·agent·教程·结构化输出
独立开发者阿乐3 天前
结构化数据 JSON-LD 实战:让 AI 读懂你的网页
人工智能·json·结构化数据·geo优化·json-ld·ai收录·faqpage
liangshanbo12155 天前
高级前端面试题:package.json 常见字段
前端·json
梦帮科技5 天前
【3.0修订版】创世与节点工程:genesis.json 与 node.toml 解剖
数据结构·算法·json·去中心化·区块链·智能合约·信任链
weixin_440730506 天前
内置函数、json文本、pickle二进制
开发语言·python·json
念越6 天前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
福兮说7 天前
前后端算的 MD5、SHA-256 对不上?编码、换行、BOM、HMAC、JSON 顺序,八个原因逐个实测
前端·javascript·node.js·json·哈希算法