You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中正确判断JSON文件里的ITEM子键是否存在?

问题描述

需要编写Python代码判断JSON文件中是否存在指定子键ITEM,需求如下:

  • 若ITEM子键存在,继续执行后续代码;
  • 若ITEM子键不存在,终止程序。

现有代码无法正常工作:

with open('C:/files/response.json') as json_file:
    data = json.load(json_file)

if 'XMLRESPONSE' in data and data['XMLRESPONSE']['ITEM']:
    print("key exist in JSON data")

else:
    print("Key doesn't exist in JSON data")

input ("Press any key")

JSON示例

存在ITEM子键的情况

{
   "XMLRESPONSE": {
      "ITEM": {
         "PARTNUM": "876666",
         "UNITPRICE": "$1.50",
         "ITEMNO": "55667",
         "VENDORITEMNO": "1206613",
         "DESCRIPTION": "tests",
         "VENDORDESCR": "test",
         "ERP": "$1,999.00",
         "REBATEVALUE": "$0.00",
         "REBATEENDDATE": null,
         "ISNONSTOCK": "false",
         "ISFACTORYDIRECT": "false",
         "FREEFRT": "true",
         "RESTRICTED": "false",
         "BRANCHQTY": [
            {
               "BRANCH": "test",
               "QTY": "0",
               "INSTOCKDATE": null
            },
            {
               "BRANCH": "test",
               "QTY": "2",
               "INSTOCKDATE": null
            },
            {
               "BRANCH": "test",
               "QTY": "5",
               "INSTOCKDATE": null
            },
            {
               "BRANCH": "test",
               "QTY": "0",
               "INSTOCKDATE": null
            }
         ],
         "TOTALQTY": "7"
      },
      "STATUS": "success"
   }
}

不存在ITEM子键的情况

{"XMLRESPONSE": {"MESSAGE": "Invalid Item Number", "STATUS": "failure"}}
解决方案

原代码的问题在于:当XMLRESPONSE存在但ITEM不存在时,直接访问data['XMLRESPONSE']['ITEM']会抛出KeyError,无法进入else分支。需要修改判断逻辑,先确认XMLRESPONSE存在,再检查ITEM是否是它的键。

修改后的代码:

import json

with open('C:/files/response.json') as json_file:
    data = json.load(json_file)

# 先检查XMLRESPONSE存在,再检查ITEM是否在其键中
if 'XMLRESPONSE' in data and 'ITEM' in data['XMLRESPONSE']:
    print("key exist in JSON data")
    # 在这里添加后续执行的代码
else:
    print("Key doesn't exist in JSON data")
    # 终止程序,导入sys模块后调用exit
    import sys
    sys.exit()

input("Press any key")

说明

  • 使用'ITEM' in data['XMLRESPONSE']判断键是否存在,避免直接取值触发异常;
  • 若要终止程序,在else分支调用sys.exit()即可,注意需先导入sys模块;
  • 也可以用更灵活的get()方法实现:if data.get('XMLRESPONSE', {}).get('ITEM') is not None,但直接检查键存在的方式更直观。

内容的提问来源于stack exchange,提问作者Alex Co

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:07:11