我在带有NodeMCU固件的ESP8266 Wifi模块上运行Lua。 我的应用程序正在侦听TCP端口以获取JSON请求。 当我收到请求时,我使用以下方法解析它:

jsonRequest = json.decode(request)

那么我可以通过以下方式访问所需的值:

jsonRequest.object.state

一切都很完美,直到我发送无效的JSON(没有“对象”)。 当发生这种情况时,我收到此错误: Lua API(尝试索引零值) ,我的程序停止执行。

我的问题:我想在访问之前检查我的表是否包含该密钥,但我找不到办法。

我可以使用函数并循环遍历所有键并检查是否有正确的键,但这需要大量代码,因为我的JSON中有多个嵌套对象。

有任何想法吗?

===============>>#1 票数:3 已采纳

要检查表jsonRequest包含密钥"object" ,请使用:

if jsonRequest.object ~= nil then

如果存储在表中的值不是布尔值false ,您还可以使用:

if jsonRequest.object then

  ask by Jaka Kordež translate from so

未解决问题?本站智能推荐:

1回复

将解码的JSON值保存在Lua变量中

以下脚本描述了通过MQTT接收的JSON对象的解码。 在这种情况下,我们将以以下JSON对象为例: 在handleOnReceive函数中接收并解码后,将使用解码后的对象调用本地函数saveTable,如下所示: saveTable函数的目标是浏览上表,并将变量“ / stations /
1回复

在Lua中检查Json的格式

如何检查字符串是否在json中正确格式化? 我遇到了接收到部分json字符串的情况,然后尝试使用Lua的json.decode解码错误的字符串时,我的应用程序崩溃了。 谢谢
1回复

在Redis中设置Lua表

我有一个lua脚本,它的简化如下: KEYS[1]是一个字符串化的json对象: JSON.stringify({name : 'some name'}); 发生的事情是,因为我正在使用cjson.encode将项目添加到集合中,所以它似乎两次被字符串化了,所以结果是:
1回复

根据嵌套的json值对lua表进行排序

我们在redis中有一个键值对,它由一个带有JSON对象的键组成,作为具有各种信息的值。 是否可以根据值的last-checkin时间对表进行排序?
1回复

如何在Redis的Lua cjson中检查nil / null?

我有一个带有代码块的lua脚本,如下所示: 当我尝试使用以下命令KEYS和ARGV运行脚本时:- 错误:-
1回复

如何在一个JSON字段中编写一些Lua表?

我有主Lua表,其中包含一些子表,例如: 我需要遍历这些表,并将结果写入JSON文件,如下所示: 我的代码(无效): 在出口处,我有以下问题: 请帮帮我!
2回复

Lua中的JSON模板

我有一个JSON对象,我想在lua中模板化。 例如: 我想用%emailId%替换电子邮件ID列表。 在lua中是否存在对JSON的模板化支持?
1回复

Json表拉入Lua

我正在寻找有关json api答案的帮助: 我想拉05. price的变量。 这是我的脚本:
1回复

读取解码的JSON LUA表

我正在学习将LUA用作我正在开发的软件中的组件,并且很大程度上将用于解析JSON文件。 我正在使用http://regex.info/blog/lua/json进行解析,我可以io.input一个文件,并使用JSON:decode(io.read("*all"))解析为local lua_
1回复

如何在lua中解析json?

是否有任何轻量级,最好是纯lua,用于lua解析json内容的库? 基本上我想用一个lua模块扩充我的ngnix,需要从我从Redis获得的json对象中验证一些信息。 该对象如下所示: 在我的lua代码中,我需要验证data.user.username存在。 然后我可以让ng