Lua使用dkjson获取JSON数组属性返回nil的解决方法
问题原因
- 传入
json.decode的参数类型不符合要求。dkjson的decode方法仅接受合法JSON格式的字符串作为入参,你当前代码里的obj是语法错误的Lua表结构,既不符合Lua语法规范也不是JSON字符串,需要先把JSON整体内容用引号包裹声明为字符串类型。 - 取值逻辑不符合JSON结构规则。你给出的JSON中
dogs字段对应的值是数组类型,解析到Lua中会转为索引从1开始的有序表,不能直接通过dogs.photo读取属性,需要先指定数组的索引位置,才能读取对应下标元素的photo属性。
正确实现代码
local json = require ("dkjson") -- 将JSON内容包裹为字符串类型 local json_str = '{"dogs":[{"photo":"http://example.com/1.jpg","price":20}]}' local obj_t = json.decode(json_str) -- 先取dogs数组的第一个元素,再读取其photo属性 local photo = obj_t.dogs[1].photo print(photo) -- 输出结果为 http://example.com/1.jpg
内容的提问来源于stack exchange,提问作者Sukin Sun
相关产品推荐
相关产品推荐

