Skip to Content
🎉 RHILEX 最新版已发布。 了解更多 →

JSON 解析

Lua Table

在 Lua 编程语言中,table 是 Lua 中的核心数据结构,它是一种动态的、可变的、关联数组和哈希表的组合。table 在 Lua 中用于存储多种类型的数据,并且是唯一一种可以拥有函数作为字段的结构。 以下是 table 的一些基本特点:

  1. 动态性table 的大小可以在运行时动态地改变。
  2. 可变性table 中的元素可以在运行时被添加、修改或删除。
  3. 索引table 可以通过整数索引访问,类似于数组。
  4. 哈希表table 也支持通过字符串或其他类型的值作为键进行快速查找,类似于哈希表。
  5. 数组和字典的组合table 可以同时作为数组和字典使用。数组特性使得它适合存储有序的元素,而字典特性则适合存储键值对。
  6. 字段和索引:在 table 中,fieldindex 是相同的概念,都可以用来引用 table 中的元素。
  7. 函数字段table 可以包含函数,这些函数称为方法。 在 Lua 中,table 的创建和使用非常简单。下面是一个创建并使用 table 的例子:
Lua
-- 创建一个空的table local myTable = {} -- 向table中添加元素 myTable["key1"] = "value1" myTable[1] = "value2" myTable[3] = "value3" -- 访问table中的元素 print(myTable["key1"]) -- 输出 "value1" print(myTable[1]) -- 输出 "value2" print(myTable[3]) -- 输出 "value3" -- 修改table中的元素 myTable["key1"] = "newValue1" -- 删除table中的元素 myTable[1] = nil -- 获取table的长度 print(#myTable) -- 输出 2

在这个例子中,myTable 是一个 table,我们向其中添加了几个键值对,并展示了如何访问、修改和删除 table 中的元素。 table 是 Lua 编程中非常强大和灵活的数据结构,适用于多种数据存储需求。

转换

json:T2J

将 Lua 的表转转为 JSON String

Lua
local s = applib:T2J({ temp = i, humi = 13.45 }) print(s)

json:J2T

将 JSON String 转为 Lua 的表

Lua
local t = applib:J2T('{"k": "v"}') print(t.k)

高级示例

下面给出一个把 Modbus 数据数据上传到 MQTT Broker 的实例:

Modbus 采集上来的数据格式如下:

JSON
{ "tag": { "tag": "tag", // 标签 "function": 1, // 功能码 "slaverId": 1, // 从机 ID "address": 1, // 地址 "quantity": 1, // 数量 "value": "3.14" // 值 } }

编写处理脚本:

Lua
Actions = { function(args) local dataT, err = json:J2T(args) if (err ~= nil) then Throw(err) return true, args end for _, value in pairs(dataT) do local params = {} params[value['tag']] = value.value local json = json:T2J({ id = time:TimeMs(), method = "thing.event.property.post", params = params }) local err = data:ToMqtt("", json) if err ~= nil then Throw(err) end end return true, args end }
© 2023-2026 RHILEX Technologies Inc. All rights reserved.