簡體   English   中英

如何為 Python 請求負載創建批量 JSON?

[英]How to create bulk JSON for Python requests payload?

我有一個項目列表,我想將這些項目添加到批量 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 可序列化”。

我確定這是因為在將我的列表轉換為字典然后錯誤地添加它時我做錯了什么但我有點卡住了。

編輯:澄清一下,我遇到的問題是如何遍歷水果列表並在發出請求之前在data字典中自動為它們添加一個param

參數在列表中。 因此,要添加另一個,您需要將 append 添加到該列表。

paramsList = data.get("requests")

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

這應該工作。 它遍歷水果列表並以正確的格式將它們添加到requests列表中。

在我看來,您只需要一個 for 循環即可解決您的問題。 如果您在使用 json.dumps 格式化數據時遇到問題,只需制作自己的字典並為每個“水果”重復該過程。

fruits   = ["a","b"]
requests = []

for f in fruits:
    requests.append({
        "params": { "fruit": [f] }
    })

data = { "requests": requests }

通過這些行,我在打印數據時得到了以下結果: {'requests': [{'params': {'fruit': ['a']}}, {'params': {'fruit': ['b']}}]}

希望它能解決問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM