Python在JSON中查找变量
我希望通过MQTT使用Python解析JSON消息,其内容如下:Python在JSON中查找变量,python,json,Python,Json,我希望通过MQTT使用Python解析JSON消息,其内容如下: {"OPTION1": "0", "OPTION2": "50", "OPTION3": "0", "OPTION4": "0"} 根据具体情况,这些选项可能通过Python解析到JSON消息中,也可能不通过Python解析到JSON消息中,因此,它可能最终看起来像: {"OPTION1": "0", "OPTION3": "0", "OPTION4": "0"} 这样就跳过了选项2,它的价值也就完全消失了 为了避免我的脚本在
{"OPTION1": "0", "OPTION2": "50", "OPTION3": "0", "OPTION4": "0"}
根据具体情况,这些选项可能通过Python解析到JSON消息中,也可能不通过Python解析到JSON消息中,因此,它可能最终看起来像:
{"OPTION1": "0", "OPTION3": "0", "OPTION4": "0"}
这样就跳过了选项2,它的价值也就完全消失了
为了避免我的脚本在我的上死机,我考虑先扫描选项是否存在,然后再设置它,如下所示:
if data['OPTION1']:
>do something here<
else:
continue
任何帮助都将不胜感激!谢谢。如果您正在使用If elsepass,continue用于循环:-
if data['OPTION1']:
>do something here<
else:
pass
if数据['OPTION1']:
>在这里做点什么<
其他:
通过
Continue与循环一起使用。您也可以尝试:-
for dataItem in data:
if "OPTION2" == dataItem:
pass
else:
>do something<
for dataItem in data:
if "OPTION2" == dataItem:
continue
>do something<
数据中的数据项的:
如果“选项2”==数据项:
通过
其他:
>做点什么
对于数据中的dataItem:
如果“选项2”==数据项:
持续
>做点什么
continue
用于循环,您可能需要pass
ehere。此外,您还可以使用中的检查字典中是否有键:
if 'OPTION1' in data:
# do something
else:
pass
但我不认为,这就是你想要的如果键在数据中不可用,您希望使用默认值并填写空白:
defaults = {"OPTION1": "0", "OPTION2": "50", "OPTION3": "0", "OPTION4": "0"}
finalData = defaults.update(data)
了解更多信息。通过
是您要查找的(而不是继续
)否则
子句是不必要的。您的第一个选项似乎给了我一个语法错误:else:^SyntaxError:invalid syntaxes是,因为您必须使用一些语句,而不是
。出于测试目的,将其替换为pass
,错误就消失了。我已经在if和else之间添加了我的语句。我没有从字面上理解您的代码示例。我只是用json加载了您的示例数据。加载了
并运行了上述代码。没有语法错误。哪一部分不适用于您?我也添加了示例:data=json.loads(msg.payload),然后在data:my语句else:pass中使用了if'OPTION1',但它仍然在else上给我一个语法错误:-我不知道为什么。
defaults = {"OPTION1": "0", "OPTION2": "50", "OPTION3": "0", "OPTION4": "0"}
finalData = defaults.update(data)