python - 在不知道索引是否存在的情况下处理访问 json 值的 pythonic 方法是什么?

标签 python json

我传递给构造函数的参数来自 json 对象,偶尔会出现 IndexError: list index out of range

class ApiResponse(object):
    def __init__(self, a=None, b=None):
        self.a = a
        self.b = b

apiResponse =  ApiResponse(
    a = jsonResponse['foo']['bar']['a'],
    b = jsonResponse['bar']['foo']['b']
)

如果索引 jsonResponse['foo']['bar']['a'] 不存在,我只希望默认值为 None在对象中设置(即,我不想将 a 的参数传递给构造函数。)

有没有一种简洁的方法来做到这一点(我的类中有大约 8 个参数,并且参数来自 json 对象的不同维度)?

最佳答案

在 Python 中,JSON 数据可以表示为字典,并且它们有一个 get 方法,如果未找到键,该方法接受默认值。你可以像这样链接它们

apiResponse =  ApiResponse(
    a = jsonResponse.get('foo', {}).get('bar', {}).get('a', None),
    b = jsonResponse.get('bar', {}).get('foo', {}).get('b', None)
)

关于python - 在不知道索引是否存在的情况下处理访问 json 值的 pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138955/

相关文章:

python - 在 Python 中使用 super() 关键字的单继承的基本示例是什么?

python - 屈服于...

python - 将 xlsx 转换为 parquet

Python - 是否可以使用列表作为 if 语句的条件?

python - matlab相当于python中的点星

java - 摆脱 MongoDB 对 JSON 格式的扩展

MySQL:更好地存储数组/json 或创建不同的行?

json - 在erlang中解析从http返回的json

json - 如何在 Azure 数据工厂中使用此 API

android - Retrofit 返回空数组列表,但给出了有效的 POJO 和 Json 来处理(尝试了其他问题,但对它们起作用的答案不在 mne 上)