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 天前
Flutter for OpenHarmony 实战:Flutter Rust Bridge — 极致计算性能方案
开发语言·后端·flutter·华为·rust·json·harmonyos
攻城狮的梦1 天前
go中json数据的转化
json
Dxy12393102162 天前
Python检查JSON格式错误的多种方法
前端·python·json
秃了也弱了。2 天前
python修复json神器:json-repair包(用于大模型返回json不规范)
python·json
I'm Jie2 天前
【已解决】SqlAlchemy 插入 MySQL JSON 字段时 None 变为 ‘null‘ 字符串,WHERE IS NULL 失效
数据库·python·mysql·json·fastapi·sqlalchemy
Hui Baby2 天前
Spring Boot 中使用 JSONPath 高效处理 JSON 数据
spring boot·python·json
Hui Baby2 天前
SpringBoot + JSON 字段 + MySQL 8.0 函数索引:灵活存储半结构化数据,查询不慢
spring boot·mysql·json
Dxy12393102163 天前
Python 将 JSON 字符串转换为字典
前端·python·json
一个天蝎座 白勺 程序猿4 天前
破译JSON密码:KingbaseES全场景JSON数据处理实战指南
数据库·sql·json·kingbasees·金仓数据库