0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

JSON:简洁代码高效搞定序列化与反序列化

合宙LuatOS 2026-02-25 19:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

面对频繁的数据交互需求,用最简方式实现JSON序列化与反序列化已成为开发者必备技能,借助主流库,轻松实现零负担数据转换。

JSONJavaScript 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类型作为输入,不支持函数、用户数据、线程和非空轻量级用户数据。

序列化成功示例:

wKgZPGmezaaAcQ6dAAERUyQg9sA486.png

序列化失败示例:

wKgZPGmezZaAbWsTAAFrmAgp1f0640.png

2)json.decode(str)功能是将符合JSON格式的字符串反序列化为Lua对象。

注意事项:输入字符串必须是合法的JSON文本,否则会解析失败;成功时返回反序列化结果和状态码1,失败时返回nil、状态码false和错误信息。

反序列化成功示例:

wKgZO2mezYGAYX0rAAEzlbbG8mI179.png

反序列化失败示例:

wKgZPGmezWSAL_U2AAFZctHBJYI079.png

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

wKgZO2mezR-APUFrAAO_sRQviwI134.png

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

wKgZO2mezQSAGVauAARezC8wOeE015.png

今天的内容就分享到这里了~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675335
  • 物联网
    +关注

    关注

    2951

    文章

    48260

    浏览量

    419611
  • 硬件工程
    +关注

    关注

    1

    文章

    228

    浏览量

    10801
  • 嵌入式硬件
    +关注

    关注

    1

    文章

    1014

    浏览量

    9421
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用Serde进行序列化反序列化

    Serde 是一个用于序列化反序列化 Rust 数据结构的库。它支持 JSON、BSON、YAML 等多种格式,并且可以自定义序列化反序列化
    的头像 发表于 09-30 17:09 2551次阅读

    怎么支持PIC32中的JSON解析和序列化

    我正在寻找支持或库,允许我将JSON对象序列化为char数组,并将char数组/字符串解析为JSON对象。我查看了JSMN库,但它看起来只是解析,而不是序列化。我目前在ARDUINO板
    发表于 11-28 16:46

    Java序列化的机制和原理

    对象的序列化反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。Java序列化算法透析Serialization(
    发表于 07-10 07:27

    Virtex ISERDES_NODELAY对快速4线总线进行反序列化怎么实现?

    你好朋友。我想使用Virtex ISERDES_NODELAY对快速4线总线进行反序列化。总线大约为700 MHz。我想确保反序列化的信号不是异相的。我的意思是,如果其中一个ISERDES由于内部路由延迟而稍后将复位,则反序列化
    发表于 06-01 16:54

    c语言序列化反序列化有何区别

    这里写自定义目录标题c语言序列化反序列化tplut.htplut.c测试代码参考c语言序列化反序列化网络调用,数据传输都需要把数据
    发表于 07-14 07:32

    关于c语言序列化反序列化的知识点看完你就懂了

    关于c语言序列反序列化的知识点你就懂了
    发表于 10-15 08:47

    SpringMVC JSON框架的自定义序列化反序列化

    ,也可以使用fastjson。jackson框架自定义序列化如果项目使用jackson框架做json序列化,推荐的方案是使用@JsonSerialize注解,示例代码如下:@JsonS
    发表于 10-10 16:02

    理解PHP反序列化漏洞

    理解PHP反序列化漏洞
    发表于 09-07 11:03 7次下载
    理解PHP<b class='flag-5'>反序列化</b>漏洞

    java序列化反序列化范例和JDK类库中的序列化API

    一、序列化反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的
    发表于 09-27 10:13 6次下载

    static属性为什么不会被序列化

    实现序列化反序列化为什么要实现Serializable接口?
    的头像 发表于 07-15 11:03 2619次阅读

    什么是序列化 为什么要序列化

    什么是序列化? “序列化”(Serialization )的意思是将一个对象转化为字节流。 这里说的对象可以理解为“面向对象”里的那个对象,具体的就是存储在内存中的对象数据。 与之相反的过程是“反序列化
    的头像 发表于 09-14 17:22 4200次阅读
    什么是<b class='flag-5'>序列化</b> 为什么要<b class='flag-5'>序列化</b>

    如何用C语言进行json序列化反序列化

    json是目前最为流行的文本数据传输格式,特别是在网络通信上广泛应用,随着物联网的兴起,在嵌入式设备上,也需要开始使用json进行数据传输,那么,如何快速简洁地用C语言进行json
    的头像 发表于 10-07 11:05 2694次阅读

    Spring Boot时配置JSON序列化选项的几种方法

    在Spring Boot Web 项目中,当使用JSON格式接收数据和返回数据的时候,Spring Boot 默认使用一个ObjectMapper实例来序列化响应和反序列化请求。 在本文中,我们将
    的头像 发表于 10-09 10:26 3628次阅读

    Java序列化怎么使用

    转换方式就叫做序列化。将文件或者网络传输中得到的 byte[] 数组转换为 java 对象就叫做反序列化。 怎么使用 如果一个 Java 对象要能被序列化,必须实现一个特殊
    的头像 发表于 10-10 14:19 1216次阅读

    极简代码搞定JSON序列化反序列化

    快速实现JSON数据的生成(序列化)与解析(反序列化)。 目前json库已全面支持LuatOS开发系列产品,开发者可根据项目实际需求,灵活选用并进行快速集成与开发。 一、
    的头像 发表于 02-23 21:46 501次阅读
    极简<b class='flag-5'>代码</b>,<b class='flag-5'>搞定</b><b class='flag-5'>JSON</b><b class='flag-5'>序列化</b>与<b class='flag-5'>反序列化</b>