Python 检查JSON密钥是否为空

Python 检查JSON密钥是否为空,python,json,python-2.7,Python,Json,Python 2.7,我希望能够检查JSON键是否为空,然后根据结果退出脚本 我有以下JSON: { "changed": false, "results": [] } 如果结果键为空(如上所述),我希望脚本退出时返回代码为0,否则它应该返回1 我试过了 import json, sys obj=json.load(sys.stdin) if obj["results"]=="": exit(0) else: exit(1) 但这会产生: IndexError: list in

我希望能够检查JSON键是否为空,然后根据结果退出脚本

我有以下JSON:

{
    "changed": false,
    "results": []
}
如果结果键为空(如上所述),我希望脚本退出时返回代码为0,否则它应该返回1

我试过了

import json, sys

obj=json.load(sys.stdin)

if obj["results"]=="":
    exit(0)
else:
    exit(1)
但这会产生:

IndexError: list index out of range

尝试使用obj[results]的长度检查键的存在及其长度:

import json, sys

obj=json.load(sys.stdin)

if not 'results' in obj or len(obj['results']) == 0:
    exit(0)
else:
    exit(1)

如果在obj中没有“结果”?我猜这会变成obj中的sys.exitintnot“results”-我有点困惑你的问题的标题在哪里-所以我不确定你真正想要的答案。你发布的代码不能抛出该异常。请包含一个有效的完整回溯。请注意,对于给定的JSON,obj['result']将生成[],而不是,因此条件失败。抱歉,我将其与我将要发布的另一个问题混淆,将更新标题,其中密钥不存在,您将没有对象来检查长度-因此这将产生与OP当前接收到的错误相同的错误。如果没有obj.get'results':将更加简洁。但是,问题还不清楚,因为问题中没有列表访问权限,所以例外是没有意义的。是的,你是对的。谢谢,这个带有@MartijnPieters修改的解决方案有效
import json, sys

obj=json.load(sys.stdin)

if not 'results' in obj or len(obj['results']) == 0:
    exit(0)
else:
    exit(1)