在嵌套字典中获取值 Python Odoo

Get value in Nested Dictionary Python Odoo

我有一个问题...又来了。这与我之前在 Cron 中的问题有关。我有 JSON 值,我想将它输入数据库。我需要帮助来获取这个嵌套字典中的值。请帮忙!

JSON

{'folders': [{'id': 94, 'name': 'Retargeting January 2021', 'totalBlacklisted': 606, 'uniqueSubscribers': 19988, 'totalSubscribers': 19382}, 
{'id': 90, 'name': 'Leads', 'totalBlacklisted': 0, 'uniqueSubscribers': 0, 'totalSubscribers': 0},
{'id': 84, 'name': 'Retargeting Year End', 'totalBlacklisted': 1367, 'uniqueSubscribers': 18847, 'totalSubscribers': 17480}, 
{'id': 79, 'name': 'CRM Folder', 'totalBlacklisted': 0, 'uniqueSubscribers': 3, 'totalSubscribers': 3},
{'id': 56, 'name': 'Curioo P', 'totalBlacklisted': 282, 'uniqueSubscribers': 3279, 'totalSubscribers': 2997}]}

Python

res = simplejson.loads(response.text)
self.env['get.folders'].create({
            'id' : self.id,
            'name': res['name'],
            'email_blacklist': res['totalBlacklisted'],
            'email_subscribers': res['totalSubscribers'],
            'unique_subscribers': res['uniqueSubscribers'],
            'foldersId': res['id'],
            })

编辑 最后它起作用了。我试图拼出这些值,但我不知道它是如何工作的,但它是这样工作的。感谢@Jack Dane 的帮助。

for folder in folders.get("folders"):
            names = folder['name']
            ids = folder['id']
            blacklist = folder['totalBlacklisted']
            subscribe = folder['totalSubscribers']
            unique = folder['uniqueSubscribers']
            self.env['sendinblue.get_folders'].create({
                    # 'id' : folder['id'],
                    'name_folder': names,
                    'email_blacklist': blacklist,
                    'email_subscribers': subscribe,
                    'unique_subscribers': unique,
                    'foldersId': ids,
                    })

您可以使用 foreach 循环调用创建函数来遍历文件夹:

folders = {'folders': [{'id': 94, 'name': 'Retargeting January 2021', 'totalBlacklisted': 606, 'uniqueSubscribers': 19988, 'totalSubscribers': 19382}, 
{'id': 90, 'name': 'Leads', 'totalBlacklisted': 0, 'uniqueSubscribers': 0, 'totalSubscribers': 0},
{'id': 84, 'name': 'Retargeting Year End', 'totalBlacklisted': 1367, 'uniqueSubscribers': 18847, 'totalSubscribers': 17480}, 
{'id': 79, 'name': 'CRM Folder', 'totalBlacklisted': 0, 'uniqueSubscribers': 3, 'totalSubscribers': 3},
{'id': 56, 'name': 'Curioo P', 'totalBlacklisted': 282, 'uniqueSubscribers': 3279, 'totalSubscribers': 2997}]}

for folder in folders.get("folders"):
    self.env['get.folders'].create({
            'id' : self.id,
            'name': folder['name'],
            'email_blacklist': folder['totalBlacklisted'],
            'email_subscribers': folder['totalSubscribers'],
            'unique_subscribers': folder['uniqueSubscribers'],
            'foldersId': folder['id'],
            })

在我的例子中,我使用文件夹作为变量,它将作为 JSON.

返回

如果您需要任何说明,请告诉我,

谢谢,