2017-09-22 9 views
-1

私は、SOAP APIで使用するPythonで辞書を構築しています。繰り返しフィールドを持つPython辞書

<dataArray> 
    <AccountingYearData> 
    <Handle> 
     <Year>string</Year> 
    </Handle> 
    <Year>string</Year> 
    <FromDate>dateTime</FromDate> 
    <ToDate>dateTime</ToDate> 
    <IsClosed>boolean</IsClosed> 
    </AccountingYearData> 
    <AccountingYearData> 
    <Handle> 
     <Year>string</Year> 
    </Handle> 
    <Year>string</Year> 
    <FromDate>dateTime</FromDate> 
    <ToDate>dateTime</ToDate> 
    <IsClosed>boolean</IsClosed> 
    </AccountingYearData> 
</dataArray> 

Seのフィールドが複数回表示されますどのようにこの完全な文字列のための https://api.e-conomic.com/secure/api1/EconomicWebService.asmx?op=AccountingYear_CreateFromDataArray

お知らせ:

マイSOAP APIは、このような入力を取ります。

このデータを使ってPythonディクテーションを作成するにはどうすればよいですか?

私はこれを行う場合:

data = { 
    'dataArray':{ 
    'AccountingYearData':{ 
     'Handle':{'Year':'2017'}, 
     'Year':'2017', 
     'FromDate':'2017-01-01', 
     'ToDate':'2017-12-31', 
     'IsClosed':'False' 
    }, 
    'AccountingYearData':{ 
     'Handle':{'Year':'2017'}, 
     'Year':'2017', 
     'FromDate':'2017-01-01', 
     'ToDate':'2017-12-31', 
     'IsClosed':'False' 
    } 
    } 
} 

を私が取得:

>>> type (data) 
<type 'dict'> 
>>> data { 
    'dataArray': { 
    'AccountingYearData': { 
     'IsClosed': 'False', 
     'FromDate': '2017-01-01', 
     'Handle': {'Year': '2017'}, 
     'ToDate': '2017-12-31', 
     'Year': '2017' 
    } 
    } 
} 

予想通りそれは私が必要なものになりましたと思うが、です。

+4

のリストを使用します辞書。 –

+0

辞書のキーは常に**ユニークです。辞書を使用せず、リストを使用してください。 '2017-01-01 '、' ToDate ':' 2017年12月31日 '、' 、 'IsClosed': 'False'}、{'Handle':{'Year': '2017'}、 'Year': '2017'、 'FromDate': '2017-01-01'、 'ToDate' 2017-12-31 '、' IsClosed ':' False '}] 'ここで構造体をキャプチャします。 –

答えて

0

まあ、答えは明白なようだとさえ「dataArray」名によって示唆された:あなたが項目のリストを持っている場合、あなたはそれらを格納するためにlistを使用したい:

data = { 
    'dataArray':[ 
     { 
      'AccountingYearData':{ 
       'Handle':{'Year':'2017'}, 
       'Year':'2017', 
       'FromDate':'2017-01-01', 
       'ToDate':'2017-12-31', 
       'IsClosed':'False' 
       }, 
      }, 
     { 
      'AccountingYearData':{ 
       'Handle':{'Year':'2017'}, 
       'Year':'2017', 
       'FromDate':'2017-01-01', 
       'ToDate':'2017-12-31', 
       'IsClosed':'False' 
       }, 
      }, 
     ] 
    } 
+0

これは、繰り返しフィールドを持つディクテーションを作成しますが、 ですが、APIは引数dataArrayを取ります。 data = {{'AccountingYearData':{...}}、{'AccountingYearData':{...}} ] c.service.AccountingYear_CreateFromDataArray(dataArray = data) しかし、私はデータの半分しか送信しません その方法がありますか? – Kresten

+0

私はこの質問をhttps://stackoverflow.com/questions/46384363/api-takes-only-half-of-my-listで尋ねました。 – Kresten

関連する問題