2017-11-20 14 views
1

に変換ここではAPIに接続している私の機能です:はPythonの辞書はJSON配列

def order_summary(): 
    """Get order summary for a specific order""" 
    # Oauth2 params 
    headerKey = api_login() 
    headers = {'Authorization': headerKey} 

    # Payload params 
    payloadOrderSum = { 
     "domainId": 15, 
     "domainName": "SGL", 
     "orderId": 3018361 
    } 

    # API response 
    orderSumResp = requests.post(url + "order/summary", data=payloadOrderSum, headers=headers) 
    print(orderSumResp.content) 

APIは基本的にそのように見えるペイロードのparamsとしてJSON配列を期待:

[ 
    { 
    "domainId": 0, 
    "domainName": "string", 
    "orderId": 0 
    } 
] 

他このAPIでコーディングしたエンドポイントは、配列として配列を使用する必要はありませんでしたので、そのまま使用して辞書として送信しても問題ありませんでした。

私はJSONライブラリを使用していくつかのことを試しましたが、動作させることができません。私は、JSonEncoderがリストとタプルをJSON配列に変換するのを見ましたが、わかりませんでした。

私は何か他の情報を提供することはできませんが、もしあれば質問してください。

ありがとうございます!

答えて

3

ラップpayloadOrderSumリストに:私は代わりにdatajson kwargを使用

payloadOrderSum = { 
    "domainId": 15, 
    "domainName": "SGL", 
    "orderId": 3018361 
} 

orderSumResp = requests.post(url + "order/summary", json=[payloadOrderSum], headers=headers) 

注意( added in version 2.4.2)。

+0

それを解決するのが一番簡単です。ありがとう!もはやJSONライブラリは必要ありません。それはライブラリを要求するライブラリを要求する! – Alex

+0

@Alexよ、うれしいわよ! – hoefling

0

それはあなたがJSONライブラリをしようとしたものを指定した場合に役立つ可能性がjson.dumps requests-doc

r = requests.post(url, data=json.dumps(payload)) 
0

であなたの辞書をダンプします。

しかし、あなたはまだ行っていない場合はこれを試してしたいことがあります

import json 
payloadOrderSum = json.dumps(
    { 
    "domainId": 15, 
    "domainName": "SGL", 
    "orderId": 3018361 
    } 
) 
関連する問題