我使用python3请求从API中提取数据。然后我json响应。其中一个字段可以具有字符串值,也可以为null。从一个简单的测试开始,我刚刚将值打印到屏幕上。但是,当值为null时,由于NoneType类的原因,我无法打印,并且它失败了。如果我打印出类型,我将看到"<类"非类型">";。
下面的代码。我正在检查响应是否为None,并且只有当它不为null时才打印出来。然而,当jResponse["variable"]的值为null或none时,我现在收到一个错误TypeError: 'NoneType' object is not subscriptable
,并指向if语句行。
response = requests.request("GET", url, headers=headers, data = payload)
jResponse = response.json()
if jResponse["variable"] is not None:
print(jResponse["variable"])
如果变量数据不为null,上面的结果将打印出来,但如果为null,则会失败。
我认为is not None
将是检查python null的正确方法。
编辑-请求响应:
"response": {
"variable1": value,
"variable2": value,
"variable3": value,
"section1": {
"variable1": value,
"variable2": null,
第1节中的variable2是我正在检查的变量,有时可能为null。所有其他变量的响应都很好。
您应该检查jResponse是否也不是None:
if jResponse is not None and jResponse["variable"] is not None:
我发现我的状态200 OK检查不在正确的位置,事实上,在while循环开始后,我得到了408超时。所以,尽管我认为回复会回来,但在数据收集过程中,这实际上是超时了。我把我的200 OK检查调高了,现在所有的回复和数据收集都必须通过200 OK检查。我现在感觉很好。