我尝试使用python处理这个JSON文件: JSON file
我想使用以下代码访问'lignes'
密钥:
import json
with open('arrets-reseau-irigo.json') as data_file:
data = json.load(data_file)
for i in data:
print("datasetid is {0}".format(i['datasetid']))
print("nom arret is {0}".format(i['fields']['nom_arret']))
print("coordonnées is {0}".format(i['fields']['geo_point_2d']))
try :
if format(i['fields']['lignes']) in data :
print("Fields : is {0}".format(i['fields']['lignes']))
else :
print('nothing')
except:
print("EXCEPTION")
结果是:
datasetid is arrets-reseau-irigo
nom arret is GIRARD
coordonnées is [47.4909169756, -0.581150255698]
nothing
datasetid is arrets-reseau-irigo
nom arret is HOTEL DE VILLE TRAM B/C
coordonnées is [47.4716862858, -0.546754596835]
EXCEPTION
您是否有示例代码来解决我的问题并仅在'ligne'
密钥存在时显示该值?
答案 0 :(得分:2)
使用您提供的文件示例。
[
{
"datasetid": "arrets-reseau-irigo",
"fields": {
"accessib": "O",
"date_maj": "Décembre 2016",
"geo_point_2d": [
47.4682358304,
-0.550894481011
],
"lignes": "L_1,L_1D,L_1S,L_2,L_2D,L_2S,L_3,L_3D,L_3S,L_4,L_6,L_10",
"nom_arret": "FOCH - SAINT AUBIN",
"source": "KEOLIS Réseau IRIGO"
},
"geometry": {
"coordinates": [
-0.550894481011,
47.4682358304
],
"type": "Point"
},
"record_timestamp": "2017-01-12T17:05:52+01:00",
"recordid": "65e54c3d5e87a803c3a2199fbde5596e5833be8f"
},
]
<强>更新强>
import json
with open('file.json') as data_file:
data = json.load(data_file)
for i in data:
print("datasetid is {0}".format(i['datasetid']))
print("nom arret is {0}".format(i['fields']['nom_arret']))
print("coordonnées is {0}".format(i['fields']['geo_point_2d']))
description = i['fields'].get('lignes', 'nothing')
print(description)
答案 1 :(得分:1)
如果我理解这一点,而不是尝试/除了你想做的事情
if 'lignes' in i['fields']:
print("Fields : is {0}".format(i['fields']['lignes']))
else :
print('nothing')
答案 2 :(得分:0)
您发布的示例JSON文件中不存在lingnes密钥,但它与说“格式”处于同一级别。像这样的东西
for count in data:
if 'fields' in data[count]:
print(data[count]['fields']['format'])
答案 3 :(得分:0)
要检查dict中是否存在密钥,请执行
if key in dict:
...
所以,在你的情况下,
if 'lignes' in i['fields']:
...
目前,您正在检查i['fields']['lignes']
的值是否是data
的键,这没有任何意义,并且也可能在整行甚至完成评估之前抛出异常,即它在评估i['fields']['lignes']
时可能会出错,因为您还没有检查'lignes'
是否是关键i['fields']
。