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

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

相关推荐
蜗牛互联网1 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西2 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨2 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
Csvn2 小时前
框架性能优化
前端
小卡车5552 小时前
java反射、自定义注解的应用(自定义分页)
java
hz567892 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
优橙教育3 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
BLUcoding3 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK3 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
yuniko-n3 小时前
【JUC】Lock 和 synchronzied 锁
java