簡體   English   中英

如何將查詢字符串轉換為有效的 json?

[英]How to convert a query string to valid json?

有沒有一種簡單的方法可以將查詢參數字符串(例如'username=andrew&password=password1234' { "username": "andrew", "password": "password1234" }

我一直在嘗試遍歷字符串並手動將參數添加到 JSON 但我很想知道是否有更簡單的方法或可用的庫。

您可以將其解析為將鍵映射到值列表的字典:

from urllib.parse import parse_qs

data = parse_qs('username=andrew&password=password1234')

這會給我們:

>>> parse_qs('username=andrew&password=password1234')
{'username': ['andrew'], 'password': ['password1234']}

這是因為一個鍵可以出現多次。 如果您確定每個鍵只出現一次,您可以使用字典理解將其轉換為單個項目:

from urllib.parse import parse_qs

data = { k: v for k, vs in parse_qs('username=andrew&password=password1234').items()
    for v in vs
}

這會產生:

>>> { k: v
...     for k, vs in parse_qs('username=andrew&password=password1234').items()
...     for v in vs
... }
{'username': 'andrew', 'password': 'password1234'}

您可以使用json.dumps(…) [python-doc]將其轉換為 JSON blob:

>>> print(dumps(data))
{"username": "andrew", "password": "password1234"}

使用urllib.parse.parse_qsl

import urllib.parse
import json
spam = 'username=andrew&password=password1234'
eggs = urllib.parse.parse_qsl(spam)
print(eggs)
foo = dict(eggs) # dict
print(foo)
bar =  json.dumps(foo) # JSON string
print(repr(bar))

output

[('username', 'andrew'), ('password', 'password1234')]
{'username': 'andrew', 'password': 'password1234'}
'{"username": "andrew", "password": "password1234"}'

注意:這是假設只有唯一的鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM