循环遍历Python中的JSON数据

时间:2018-04-25 22:34:58

标签: python json api parsing for-loop

我还是Python新手,此时我正在尝试GET请求,只显示一个特定字符串的值。

import requests
import json

response = requests.get("APIURL")
data = response.text
parsed = json.loads(data)
id = parsed["products"][0]["id"]
print(id)

正如你在上面的代码中看到的那样,我还没有for循环,已经尝试了不同的东西,但仍然没有让它工作。通过上面的代码,我得到了' id'只有第一个产品,其他产品我没有得到结果。

从JSON加载的dict的打印输出如下所示:

{
    products: [
        {
            id: 66057248,
            createdAt: "2018-02-28T14:55:22+01:00",
            updatedAt: "2018-02-28T14:55:22+01:00",
            isVisible: true,
            visibility: "visible",
            hasMatrix: false
        }
    ]
}

3 个答案:

答案 0 :(得分:1)

你可以这样做:

for product in parsed:
    for index in parsed[product]:
        for element in parsed[product][index]:
            print(element.id)
            print(element.createdAt)
            # ...

在Simon的回答中,循环中的id值实际上是'id''createdAt'等。要仅打印ID,因为它建议您需要断言密钥是否等于'id',是什么让循环无用。

注意:建议不要将id用作变量名。这是一个保留字,在这种情况下,您可以添加下划线来代替id_

答案 1 :(得分:1)

diek的解决方案对我有用,因此我编辑了我的帖子。更好的代码是:

import requests
import json
response = requests.get("")
data =response.text
parsed=json.loads(data)

for product in parsed['products']:
    print(product['id'])

输出结果如下:

66057248
66057245
66057242
66057239
66057236
66057233
66057230
66057227
66057224

答案 2 :(得分:0)

Json使用字典,因此您可以使用keys()获取所有可能的值,然后通过它们进行反复识别:

for id in parsed["products"][0].keys():
    print(parsed["products"][0][id])

想出来:

这不是json。它是YAML(因为你的代码缺少"(语音标记))。您需要一个YAML解析器来运行它。一旦你有,它将正确运行。