我想要将这样的查询字符串进行转换:
a=1&b=2
转换为JSON字符串
{"a":1, "b":2}
有现成的解决方案吗?
Python 3+
import json
from urllib.parse import parse_qs
json.dumps(parse_qs("a=1&b=2"))
Python 2:
import json
from urlparse import parse_qs
json.dumps(parse_qs("a=1&b=2"))
在这两种情况下,结果都是相同的。
'{"a": ["1"], "b": ["2"]}'
这实际上比你的{"a":1, "b":2}
更好,因为URL查询字符串可以合法地包含相同的键多次,即每个键对应多个值。
urlparse
现在被称为urllib.parse
。 - Curtis Fennerimport urllib.parse as urlparse
改为 from urllib import parse as urlparse
,这样可以不影响代码其他部分。 - Tomalakparse_qsl
- dict(urlparse.parse_qsl('a=1&b=2'))
输出:'{"a": ["1"], "b": ["2"]}'
- Nikhil Prakash>>> strs="a=1&b=2"
>>> {x.split('=')[0]:int(x.split('=')[1]) for x in strs.split("&")}
{'a': 1, 'b': 2}
d = dict((key, value) for (key, value) in iterable)
。 - Mobergfrom json import dumps
from urllib.parse import parse_qs
dumps(parse_qs("a=1&b=2"))
yelds
{"b": ["2"], "a": ["1"]}
dict((itm.split('=')[0],itm.split('=')[1]) for itm in qstring.split('&'))
import json
def parse_querystring(query_string):
variables = dict()
for item in query_string.split('&'):
key, value = item.split('=')
# if value is an int, parse it
if value.isdigit():
value = int(value)
variables[key] = value
return variables
query_string = 'user=john&uid=10&mail=john@doe.com'
qs = parse_querystring(query_string)
print(repr(qs))
print(json.dumps(qs))
{'user': 'john', 'uid': 10, 'mail': 'john@doe.com'}
{"user": "john", "uid": 10, "mail": "john@doe.com"