Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在JSON中查找变量_Python_Json - Fatal编程技术网

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,它的价值也就完全消失了 为了避免我的脚本在

我希望通过MQTT使用Python解析JSON消息,其内容如下:

{"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 elsepasscontinue用于循环:-

 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)