我在带有 NodeMCU 固件的 ESP8266 Wifi 模块上运行 Lua。我的应用程序正在侦听 JSON 请求的 TCP 端口。当我收到请求时,我使用以下方法解析它:
jsonRequest = json.decode(request)
Run Code Online (Sandbox Code Playgroud)
那么我可以通过以下方式访问所需的值:
jsonRequest.object.state
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我发送无效的 JSON(没有“对象”)。发生这种情况时,我收到此错误:Lua API(尝试索引 nil 值)并且我的程序停止执行。
我的问题:我想在访问之前检查我的表是否包含该键,但我找不到方法来做到这一点。
我可以使用pairs函数来完成它并遍历所有键并检查是否有正确的键,但这需要大量代码,因为我的JSON中有多个嵌套对象。
有任何想法吗?
要检查表是否jsonRequest包含 key "object",请使用:
if jsonRequest.object ~= nil then
Run Code Online (Sandbox Code Playgroud)
如果存储在表中的值不是布尔值false,您还可以使用:
if jsonRequest.object then
Run Code Online (Sandbox Code Playgroud)