在 Python 中解析嵌套的 urlencode 请求正文

parse a nested urlencode request body in Python

如何转换 urlencode 请求主体(如 PHP 的 http_build_query 函数生成的请求主体),如下所示:

foo=bar&baz=3&metadata[name]=john&metadata[lastname]=smith

进入嵌套的 Python 字典,像这样?

{
   'foo': 'bar',
   'baz': 3,
   'metadata': {
       'name': 'john',
       'lastname': 'smith'
   }
}

这看起来是一个常见问题 - 所以我确定存在一些库,最好避免为此编写自己的函数。例如,multidimensional_urlencode 解决了相反的问题——从字典生成查询字符串——但不进行解析。

您可以使用 jQuery-Unparam 库实现此目的:

from jquery_unparam import jquery_unparam

url = "foo=bar&baz=3&metadata[name]=john&metadata[lastname]=smith"
print(jquery_unparam(url))

输出:

{'foo': 'bar', 'baz': '3', 'metadata': {'name': 'john', 'lastname': 'smith'}}