如何在Lua中获取JSON嵌套字段data.numTracking与urlTracking的值
如何从JSON嵌套字段中获取值?
你当前的问题是无法获取嵌套在data字段下的numTracking和urlTracking,核心原因是代码里直接通过item[tag2]从顶层对象查找,但这些字段属于item.data这个子对象,并非顶层属性。
修改后的代码
value1 = "000545671" tag1 = "merchantReference" tag2 = "numTracking" function getData(jsonFile, tag1, value1, tag2) local file = io.open(jsonFile, "r") local content = file:read("*all") file:close() local data = json.decode(content) local tracking = nil for i, item in ipairs(data) do if item[tag1] == value1 then -- 先确认data字段存在,再从子对象中取目标值 if item.data then tracking = item.data[tag2] -- 找到匹配项后提前退出循环,提升效率 break end end end return tracking end
关键说明
- 路径修正:必须先访问
item.data子对象,再从中获取numTracking或urlTracking,也就是用item.data[tag2]替代原代码的item[tag2] - 空值防护:增加
item.data的存在判断,避免因JSON结构异常导致运行报错 - 优化循环:找到匹配条目后用
break终止遍历,无需处理剩余数据
如果要获取urlTracking,只需将tag2的值改为"urlTracking"即可。
内容的提问来源于stack exchange,提问作者zell1203
相关产品推荐
相关产品推荐

