首页 > 解决方案 > 如何为 Python 请求有效负载创建批量 JSON?

问题描述

我有一个要添加到批量 API 请求的有效负载的项目列表。我似乎无法以正确的方式将项目添加到有效负载 JSON 中。

这就是我想要做的:

import json

fruits = ['apple','pear','banana']

headers = {
   'X-Api-Key': API_KEY,
   'Content-Type': 'application/json',
}
 
data = {
   "requests": [
       {
           "params": {
               "fruit": ["apple"]
           }
       },
       {
           "params": {
               "fruit": ["pear"]
           }
       }
       {
           "params": {
               "fruit": ["banana"]
           }
       }
   ]
}
json_responses = requests.post(
   'https://foo.bar/api/bulk',
   headers=headers,
   json=data
).json()

如何将新params项目添加到列表中每个项目的数据有效负载?

我从几年前找到了这个答案,但如果我尝试:

my_fruits = json.dumps([dict(fruit=f) for f in fruits])

然后像这样插入它,我得到错误“类型集的对象不是 JSON 可序列化的”。

我确定这是因为我在将列表转换为字典然后错误地添加它时做错了,但我有点卡住了。

编辑:澄清一下,我遇到的问题是如何遍历水果列表并在发出请求之前在字典中自动param为它们添加一个。data

标签: pythonjsonapidictionarypython-requests

解决方案


参数在列表中。因此,要添加另一个,您需要附加到该列表中。

paramsList = data.get("requests")

for item in fruits:
  paramsList.append(
    {
       "params" : {
          "fruit" : item,
        }
    }
  )

这应该有效。它遍历水果列表并以requests正确的格式将它们添加到列表中。


推荐阅读