JSON在数据存在时做一些事情,在数据不存在时做其他事情

2024-05-03 17:02:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个JSON数据的API,它有大约600个条目,每个条目都包含关于对象的变化数据。在某些情况下,有一个关键数据值,而在另一些情况下,没有。我想检查JSON数据是否存在并存储它,以及它是否没有移动到下一个设备

尝试对包含特定数据和不包含特定数据的条目进行排序:

if data["entity"][n]["sensor_data"]["light_ intensity"] in data["entity"]:
    logger.debug("There is light_intensity data on this devcie")
    light_ intensity = data["entity"][n]["sensor_data"]["light_ intensity"]

最好的方法是什么?现在我得到了一个KeyError没有定义“光强度”——如果我手动查看数据并搜索一个确实有light_ intensity数据的实体,然后像这样硬编码它

light_ intensity = data["entity"][222]["sensor_data"]["light_intesity"]
logger.debug("Devcie 222 light_intesity: %s lums", light_intesity)

退货:

Device 222 light_intensity: 88 lums

这告诉我,我可以从有数据的实体中读取数据,从没有数据的实体中获取KeyError。我试图创建一个搜索,在某种意义上说,让我找到什么设备有光读数百分比,并使用该数据和跳过设备,目前没有发送该数据


Tags: 数据debug实体jsondata情况条目sensor
1条回答
网友
1楼 · 发布于 2024-05-03 17:02:09

KeyError that 'light_intesity'is not defined

首先,您将强度拼写错误,light_intensity的值不会是in data["entity"],如果这是一个dict列表,但强度只是一个数字

但是如果您想循环所有元素并且不确定它们是否存在,请使用dict.get(key, default)

for i, e in enumerate(data.get("entity", [])):
    sensor_data = e.get("sensor_data", dict())
    light_intensity = sensor_data.get("light_intensity", None)
    logger.debug("Device %d ; light_intensity: %s lums", i, light_intensity)

相关问题 更多 >