Вывод OrderedDict имеет одинарные кавычки, и я хочу только внутренности без одинарных кавычек - PullRequest
0 голосов
/ 30 ноября 2018

Итак, я пытался использовать OrderedDict внутри json.dumps (), и он начал работать хорошо.Тем не менее, при попытке использовать выходные данные непосредственно внутри полезной нагрузки запроса HTTP PUT, он содержит эти одинарные кавычки, которые, как мне кажется, связаны с тем, как интерпретируется json на принимающей стороне.

Таккак мне обойти это и дать мне вывод без одинарных кавычек?

Пример:

out = json.dumps(OrderedDict([("name", 1), ("value", 2)]))

... дает вывод, такой как:

'{"name": 1, "value": 2}'

... когда я хочу, чтобы он дал мне мясо, json, например:

{"name": 1, "value": 2}

... чтобы я мог поместить это прямо в мой

r = requests.post(url, data = out)

... и будь на моем веселом пути.

В качестве отступления: есть ли что-то ОЧЕНЬ базовое в строках и строковых литералах (какими бы они ни были), которые я полностью упускаю?Мои знания Python самообучаются, я уверен, что есть некоторые пробелы.

РЕДАКТИРОВАТЬ: print(out)

... дает

{"name": 1, "value": 2}

это то, что я считаю, я хочу.

EDIT2: json = out, как упоминалось в выбранном ответе, сделал трюк спасибо!Однако, поскольку я только начинаю с написания кода на Python, я хотел бы узнать, встречались ли вы какие-либо статьи / документацию, которые могут быть мне полезны, чтобы избежать подобных проблем в будущем.Спасибо еще раз всем!

1 Ответ

0 голосов
/ 30 ноября 2018

requests закодирует данные для вас.Вы должны быть в состоянии передать OrderedDict непосредственно post:

out = OrderedDict([("name", 1), ("value", 2)])
r = requests.post(url, json=out)

Надеюсь, это поможет.


РЕДАКТИРОВАТЬ: я понял, что другой ответ , которая может вам помочь, и предлагает использовать json вместо data при совершении вызова post.

Документация:

http://docs.python -requests.org/ о / ведущий / пользователь / Quickstart / # более осложненный-пост-запросы * ** 1022 тысяча двадцать один *

...