LuatOS核心库API——【json 】json 生成和解析库

JSON格式因其简洁性和可读性,成为跨平台数据交互的首选。而实现JSON数据的构建与解析,依赖于成熟稳定的库支持。本文将全面解析主流编程语言中JSON库的实现方式,涵盖序列化策略、语法树解析、流式处理等关键技术,为开发者提供完整的技术参考。

一、概述

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其结构清晰、易于阅读和编写,被广泛应用于配置文件、网络通信和数据存储等场景。在嵌入式开发中,高效、可靠的 JSON 解析与生成功能对于设备与云端或其他系统之间的数据交互至关重要。

为此,LuatOS 提供了 json 核心库,无需额外依赖即可快速实现 JSON 数据的解析(反序列化)与生成(序列化)。

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;

如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;

json 库没有常量;

四、函数详解

4.1 json.encode(obj,t)

功能

将 Lua 对象序列化为符合 JSON 格式的字符串;

注意事项

  1. obj 参数仅支持字符串、数字、布尔值、表、nil 类型作为输入,不支持函数、用户数据、线程和非空轻量级用户数据;

  2. t 参数从 2024.1.9 版本起默认使用 "%.7f" 格式,之前默认使用 "%.7g" 格式;

参数

obj

t

返回值

local json_str, err_msg = json.encode(obj, t)

有两个返回值 json_str、err_msg;

json_str

err_msg

示例

4.2 json.decode(str)

功能

将符合 JSON 格式的字符串反序列化为 Lua 对象;

注意事项

  1. 输入字符串必须是合法的 JSON 文本,否则会解析失败;

  2. 成功时返回反序列化结果和状态码 1,失败时返回 nil、状态码 false 和错误信息;

参数

str

返回值

local obj, result, err = json.decode(str)

有三个返回值 obj、result、err;

obj

result

err

示例

五、模组支持说明

支持 LuatOS 开发的所有模组都支持 json 核心库。

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

相关推荐
Heartache boy几秒前
野火STM32_HAL库版课程笔记-手动建立工程模板与CubeMX后续用法(重要)
笔记·stm32·单片机·嵌入式硬件
计算机毕设指导610 分钟前
基于SpringBoot校园学生健康监测管理系统【源码文末联系】
java·spring boot·后端·spring·tomcat·maven·intellij-idea
mysuking16 分钟前
springboot与springcloud对应版本
java·spring boot·spring cloud
希望永不加班16 分钟前
SpringBoot 数据库连接池配置(HikariCP)最佳实践
java·数据库·spring boot·后端·spring
迈巴赫车主19 分钟前
蓝桥杯3500阶乘求和java
java·开发语言·数据结构·职场和发展·蓝桥杯
身如柳絮随风扬1 小时前
Lambda、方法引用与Stream流完全指南
java·开发语言
yaoyouzhong1 小时前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring
前端精髓1 小时前
移除 Effect 依赖
前端·javascript·react.js
姗姗的鱼尾喵1 小时前
Spring/SpringBoot 面试高频(含IOC/AOP/事务)
java·spring boot·面试
码云之上2 小时前
从一个截图函数到一个 npm 包——pdf-snapshot 的诞生记
前端·node.js·github