如何在Python中支持相同JSON数据的不同配置?

时间:2019-06-19 01:25:37

标签: json python-3.x

我正在尝试从一些JSON数据中获取一个值。值存储在下面的键可以不同。我想同时支持两个版本。

我尝试执行条件语句来检查系统可能正在运行的版本。

if csv_json['com.revl.fileutils.LocalFileRef']['path'] != None :
    csv_path = csv_json['com.revl.fileutils.LocalFileRef']['path']
else:
    csv_path = csv_json['path']

如果我在与csv_json['com.revl.fileutils.LocalFileRef']['path']格式兼容的系统上运行上述代码,则一切正常。如果我在支持csv_json['path']格式的系统上运行它,则会失败并显示

  File "main.py", line 51, in <module>
    main()
  File "main.py", line 38, in main
    if csv_json['path'] != None :
KeyError: 'path'

当然,如果我翻转条件,也会得到相反的结果。

1 个答案:

答案 0 :(得分:0)

尝试

if 'com.revl.fileutils.LocalFileRef' in csv_json:

甚至更好:

local_file_ref = csv_json.get('com.revl.fileutils.LocalFileRef')
if local_file_ref:
    csv_path = local_file_ref['path']
else:
    csv_path = csv_json['path']

如果找不到密钥,则.get()的{​​{1}}方法将返回dict(或您可以作为第二个参数传递的可选默认值)。

一个班轮版本可能是:

None