JSONデータを受け入れるURLの1つにjsonオブジェクトを渡そうとしています。
以下は動作します:
payload='{"message": "hello"}'
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
r = requests.post(url, data=payload, headers=headers)
r.textが「こんにちは」をくれます
しかし、私が変数を渡そうとしたとき
s="hello"
payload='{"message":' +str(s)+ '}'
headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
r = requests.post(url, data=payload, headers=headers)
上記は機能しませんでした。 JSONとしてロードしようとすると、エラーもスローされます
payload=json.loads(payload)
JSONDecodeError: Expecting value: line 1 column 12 (char 11)
また、b'blahblah 'をJSONメッセージとして渡したかったのです。文字列を渡してもうまくいかなかったので、バイト形式を渡そうとしませんでした。
アドバイスをお願いします
JSONオブジェクトの文字列を二重引用符で囲む必要があります。
payload='{"message":"' +str(s)+ '"}'
payload
が'{"message": "hello"}'
になるようにします。
そうでない場合、payload
は現在のコードで'{"message": hello}'
になります。
recは、値を出力したい変数です。
url = "abc.com"
payload = '{"text":"' +str(rec)+ '"}'
r = requests.post(url,data=payload)
使用する json.dumps
:
payloads = {"message": s}
r = requests.post(url, data=json.dumps(payloads), headers=headers)