Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中支持相同JSON数据的不同配置?_Json_Python 3.x - Fatal编程技术网

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

如何在Python中支持相同JSON数据的不同配置?,json,python-3.x,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['co

我试图从一些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\u json['path']
格式的系统上运行它,那么它会失败

  File "main.py", line 51, in <module>
    main()
  File "main.py", line 38, in main
    if csv_json['path'] != None :
KeyError: 'path'
文件“main.py”,第51行,在
main()
文件“main.py”,第38行,在main中
如果csv_json['path']!=无:
KeyError:“路径”
当然,如果我翻转条件,我会得到相反的结果。

试试看

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']
如果找不到键,
dict
.get()
方法将返回
None
(或作为第二个参数传递的可选默认值)

单行程序版本可以是:

csv_path = (csv_json.get('com.revl.fileutils.LocalFileRef') or csv_json)['path']
试一试

或者更好:

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']
如果找不到键,
dict
.get()
方法将返回
None
(或作为第二个参数传递的可选默认值)

单行程序版本可以是:

csv_path = (csv_json.get('com.revl.fileutils.LocalFileRef') or csv_json)['path']