2017-06-22 19 views
0

我使用Python 3的API來發送一個JSON有效載荷喜歡這樣,因爲我有200個項目,定期發送的正常工作,但是進展緩慢多個記錄:的Python POST在一個API調用

{ 
    "first_name":"Ellen", 
    "address_country":"US" 
} 

我檢查,我可以手動發送該有效載荷,它創造兩個記錄這正是我需要的:

{ 
    ["first_name":"Ellen", 
    "address_country":"US"], 

    ["first_name":"John", 
    "address_country":"US"] 

} 

但我似乎不能以編程方式產生的多個記錄。目前,我的代碼是:

payload = {} 
payload['first_name'] = "Ellen" 
payload['address_country'] = "US" 
json_payload = json.dumps(payload) 

如何添加第二個記錄的有效載荷,我一直覆蓋它。我主要想通過我的數組迭代建立我的有效載荷並將結果發送X次的一次而不是每個數組迭代發送一個單一的有效載荷。

好了,謝謝大家誰回答,但它並沒有解決這個問題,我得到一個JSON有效載荷,它看起來像下面這是我想你的意思是:

[ 
    {"first_name":"Ellen", 
    "address_country":"US"}, 

    {"first_name":"John", 
    "address_country":"US"} 

] 

但是服務器拋出返回一個錯誤代碼400,表示沒有任何字段存在(它們是哪個)。我認爲他們的API只能接受每個請求一個輸入.. :-(

+0

您的數據來自哪裏?這是一個列表嗎?字典? – bdeo

+0

您建議發送的JSON無效,在Python中也不存在:) – Infinity

+0

您是對的,道歉 - 我錯誤地將API作爲API的返回 - 看起來像API一次只能請求一個請求。感謝您花時間回覆! –

回答

1

你只需要使用正確的跡象:)

[ 
    {"first_name":"Ellen", 
    "address_country":"US"}, 
    {"first_name":"John", 
    "address_country":"US"} 
] 

要通過線做線:

import json 
payload = [] 
current_person = {} 
current_person['first_name'] = 'Ellen' 
current_person['address_country'] = 'US' 
payload.append(current_person) 
current_person['first_name'] = 'Ronnie' 
current_person['address_country'] = 'Canada' 
payload.append(current_person) 
json_payload = json.dumps(payload) 

甚至:

persons = [('Ronnie', 'Canada'), ('Ellen', 'US')] 
json_payload = [] 
for name, country in persons: 
    json_payload.append({'name': name, 'country': country}) 
+1

這是我確切的答案,你只是輸入比我更快一點:D – bdeo

+0

這完美地創建了我所有的API調用的列表 - 可悲的是,API一次只需要一個記錄該死! –