对象/数组中的FOR循环

2024-06-25 23:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python创建一个应用程序。我发出一个HTTP请求,得到以下结果:

{
    "companies": {
        "company": [
            {
                "createDt": "2014-01-18T00:00:00+01:00",
                "dbNazev": "sveatlo_s_r_o_",
                "id": "1",
                "licenseGroup": "null",
                "nazev": "Sveatlo s.r.o.",
                "show": "true",
                "stavEnum": "ESTABLISHED",
                "watchingChanges": "false"
            },
            {
                "createDt": "2014-01-20T00:00:00+01:00",
                "dbNazev": "hajocka",
                "id": "2",
                "licenseGroup": "null",
                "nazev": "HájoÄka",
                "show": "true",
                "stavEnum": "ESTABLISHED",
                "watchingChanges": "false"
            }
        ]
    }
}

然后我在for循环中处理数据。问题是,回应也可能是这样的:

^{pr2}$

目前,我正在检查它是否是一个数组后,每一个这样的请求,但我觉得这不是最好的方法。有谁能帮我找到更好的解决办法吗?在

谢谢你的回答。在

编辑:我无法更改服务器的响应


Tags: idfalsetrue应用程序httpshownullcompanies
2条回答

将not list转换为list或tuple,然后循环:

def make_list(item):
    if not isinstance(item, (list, tuple)):
        return [item]
    return list(item)

for company in make_list(data['companies']['company']):
    process_company(company)

规范化你正在分析的信息。这样可以防止你重复:

假设您的数据可能如下所示:

some_json_data = {"companies": {"foo": 1}}

或者像这样:

^{pr2}$

因此,在解析json数据时,请执行以下操作:

i_expect_an_array = some_json_data['companies']
if not isinstance(i_expect_an_array, list):
    i_expect_an_array = (i_expect_an_array,)

# Now, you can process the data as you normally would

不需要两个独立的类似代码块。在

相关问题 更多 >