Как передать переменную в объект Json при отправке HTTP-запроса - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь передать объект json на один из моих URL, который принимает данные 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. Поскольку передача строки не работала для меня, я не пытался передать формат байтов.

Пожалуйста, совет

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Использование json.dumps:

payloads = {"message": s}

r = requests.post(url, data=json.dumps(payloads), headers=headers)
0 голосов
/ 14 сентября 2018

Вы должны включить двойные кавычки вокруг строки в вашем объекте JSON:

payload='{"message":"' +str(s)+ '"}'

, чтобы payload стало '{"message": "hello"}'.

В противном случае payload станет '{"message": hello}' с вашим текущим кодом.

...