Python Web APIにて、JSONのtrue, falseを指定する方法「json」

 本記事では、Python辞書型をJsonへ変換して、ポストリクエストする雛形コードを載せました。(このサンプルは実在しないURLとリクエスト情報のため、ポストメソッド実行時にレスポンスのエラーになります。あくまで例のための雛形コードです)

f:id:HK29:20220416124340p:plain

■本プログラム
  jsonをインポートして json.dumpsで変換します。さらに、postリクエスト時に jsonであることの明示のためにヘッダーの指定が必要です。

import requests
import json

# リクエストURL
request_url = 'http://xxx'

# プロキシ設定(明示的に不要な場合はNoneを指定)
proxies = {
    'http': None,
    'https': None,
}

# リクエストしたいパラメータのリスト例
example_request_list1 = ['1', '2', '3', 1, 2, 3]

# リクエスト情報 (Pythonの辞書型)
request_data = {
    'aaa': example_request_list1,
    100: 'test',
    'bbb': {
        'ccc': [
            {
                'ddd': 'true',
                'eee': 'True',
                'fff': True,
            }
        ]
    }              
}
print(type(request_data), request_data)

# Pythonの辞書型をJSON文字列型へ変換する。True が trueになる
request_data_json_str = json.dumps(request_data)
print(type(request_data_json_str), request_data_json_str)

print(json.dumps(request_data, indent = 4))

 そして、次のようにポストリクエスト時に、ヘッダーを指定することと、引数dataでJson文字列を指定します。

# レスポンス
headers = {'Content-Type': 'application/json'}
res_data = requests.post(
    request_url, 
    proxies = proxies,
    data = request_data_json_str,
    headers = headers,
)
print(res_data)
print(res_data.headers)

(参考)JSONPython辞書型への変換

# JSON文字列をPython辞書型へ変換する場合
req_dict = json.loads(request_data_json_str) req_dict
# レスポンスをPython辞書型へ変換する場合
res_dict = json.loads(res_data.text) res_dict

以上

<広告>