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 核心库。

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

相关推荐
linux_cfan29 分钟前
16 · `custom-media-element`:属性拦截与转发
前端·javascript·音视频
OxYGC34 分钟前
[AI工程] Spring AI 第十四篇:Agent 五种模式在 2.0 里怎么写
java·spring·ai·ai编程
code2cat35 分钟前
【随笔】从聊天到调用工具:理解MCP在AI应用中的位置
java·人工智能
右耳朵猫AI39 分钟前
Web前端周刊2026W38 | React 19.3 发布、StyleX 深潜、jsdom 30.1 提速
前端·javascript·react.js·typescript·node.js
2501_9339232543 分钟前
Spring Bean作用域揭秘:单例、原型、请求与会话的区别
java·后端·spring·java-ee
wuyk5551 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
深圳市恒锐丰科技杨生1 小时前
EG1165 / EG1165S 600V 半桥 PWM 控制芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
学编程就要猛1 小时前
基于Spring AI 的智能聊天机器人
java·spring ai·chat robot
修炼室1 小时前
Java开发工程师笔试经验贴【高频知识】
java
人工智能培训1 小时前
大语言模型:从语言理解到通用智能的跃迁
linux·服务器·前端·人工智能