You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lua中动态获取嵌套数组的元素值

Lua动态读取嵌套数组中的JSON值

首先修正你给出的JSON语法错误(存在括号不匹配、引号缺失问题),正确结构如下:

[
  {
    "Type": "home",
    "Number": "1234456"
  },
  {
    "Type": "personal",
    "Number": "66666666"
  }
]

要动态获取目标值,比如根据Type字段匹配对应内容,或者遍历所有嵌套元素,直接通过Lua的table遍历即可实现,以下是实用示例:

示例1:根据指定Type值获取对应号码

假设已用JSON解析库(如dkjson、cjson)把JSON字符串转成了Lua table:

local phoneNumbers = {
  { Type = "home", Number = "1234456" },
  { Type = "personal", Number = "66666666" }
}

-- 动态查找函数
function getNumberByType(phoneList, targetType)
  for _, phone in ipairs(phoneList) do
    -- 注意Lua区分大小写,对应JSON的"Type"字段
    if phone.Type == targetType then
      return phone.Number
    end
  end
  return nil -- 未找到返回nil
end

-- 动态传入目标Type使用
local targetType = "home"
local result = getNumberByType(phoneNumbers, targetType)
print(result) -- 输出:1234456

示例2:遍历所有嵌套元素的Type值

如果需要逐个获取所有Type字段内容,直接遍历数组即可:

for index, phone in ipairs(phoneNumbers) do
  print(string.format("第%d条记录的类型:%s", index, phone.Type))
end

关键注意点

  • Lua中JSON解析后的数组是从1开始的整数索引table,用ipairs遍历即可
  • 严格匹配字段大小写:原JSON是"Type",Lua table中对应的键是Type,别写成小写的type
  • 若原始数据是JSON字符串,需先通过解析库转成Lua table才能操作

内容的提问来源于stack exchange,提问作者Srinivas Reddy Bhethi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:35:02