python - 如果一个字段不存在,如何在 JSON 中跳过?
问题描述
我有如下 JSON 文件,我必须跳过"channels"
哪个是空的或不存在的。如何在python中实现?
[
{
"account": "fcbc9098c4",
"name": "test-everything",
"apps": [
"messages",
"kubelet.service"
],
"category": [],
"viewid": "3fddf26cb4",
"channels": [
{
"integration": "email",
"immediate": false,
"terminal": true,
"triggerlimit": 1,
"triggerinterval": "30m",
"operator": "presence",
"emails": [
"yugendhar.reddy.jakkidi@****.com"
],
"alertid": "dd317339ad"
}
],
"presetids": []
},
{
"viewid": "0df42550ee",
"name": "test - system logs",
"apps": [
"kubelet.service",
"kernel",
"messages",
"audit.log",
"auditd",
"crio"
],
"category": [],
"account": "fcbc9098c4"
}
]
我正在阅读python中的文件,如下所示...
import os
import requests
import json
import sys
filename=open(r"/home/yugendhar.jakkidi/viewsLogdna.json")
data = json.load(filename)
for i in data:
print(i['name'],i['apps'],i['viewid'])
我想要的输出应该如下,因为它有"channels"
:
{
"account": "fcbc9098c4",
"name": "test-everything",
"apps": [
"messages",
"kubelet.service"
],
"category": [],
"viewid": "3fddf26cb4",
"channels": [
{
"integration": "email",
"immediate": false,
"terminal": true,
"triggerlimit": 1,
"triggerinterval": "30m",
"operator": "presence",
"emails": [
"yugendhar.reddy.jakkidi@****.com"
],
"alertid": "dd317339ad"
}
],
"presetids": []
},
解决方案
尝试使用 json 列表。
import os
import requests
import json
import sys
filename=open(r"/home/yugendhar.jakkidi/viewsLogdna.json")
data = json.load(filename)
len = len(data)
n = 0
while n < len:
try:
data_channels = data[n]["channels"]
print(data[n])
except:
print("channels not there")
if n ==(len):
break
n +=1
** 输出 **
{
"account": "fcbc9098c4",
"name": "test-everything",
"apps": [
"messages",
"kubelet.service"
],
"category": [],
"viewid": "3fddf26cb4",
"channels": [
{
"integration": "email",
"immediate": false,
"terminal": true,
"triggerlimit": 1,
"triggerinterval": "30m",
"operator": "presence",
"emails": [
"yugendhar.reddy.jakkidi@ibm.com"
],
"alertid": "dd317339ad"
}
],
"presetids": []
}
推荐阅读
- python - TypeError:“节点”对象不可迭代
- c# - Xamarin.Forms 处理通知启动 (UWP)
- scala - Foreach 无法打印列表元素
- kotlin - 使用 mediaPlayer.release() 时 mediaPlayer 崩溃
- excel - sumif 在 VBA 中具有动态列和范围
- c++ - 链接器没有看到我的 Class.cpp
- r - 如何防止 geom_text_repel 使用默认编号排序列表在散点图上标记点?
- c++ - 私有静态成员 - 编译错误?
- javascript - 在 VSCode 中为 React 组件自动添加标签
- c++ - Visual Studio C++ LNK1104:无法打开文件 pthreadsVC2.lib,尽管从链接器中删除了依赖项