Я использую API, который не принимает JSON в теле запросов.Он использует x-www-form-urlencoded
.
Таким образом, если я должен отправить это dict
:
{
'a': 1,
'b': 2,
'c': {
'k': 3,
'v': 4,
'l': {
'p': 5,
'q': 6,
},
},
}
Это должно быть закодировано следующим образом:
a=1
b=2
c[k]=3
c[v]=4
c[l][p]=5
c[l][q]=6
Однако urllib.parse.urlencode
не будет анализировать dict
таким образом.Вместо этого он собирается буквально кодировать c
контент и помещать его в него (c={encodeddict}
).
Я пытался самостоятельно реализовать такой кодер, но не смог разобраться с несколькими вложенными dicts
.Мне удалось закодировать только 1-й уровень dicts
(например, c[k]=3
), но не рекурсивно до последнего уровня (например, c[l][p]=5
).
Каков наилучший способ достижения этого видакодировка в Python 3?