我正在使用流行的请求库来从API请求数据。以下作品:
import requests
parameters = {
'action': 'query_plugins',
'per_page': 10,
'browse': 1,
'page': 1,
}
response = requests.get('https://api.wordpress.org/plugins/info/1.1/', parameters)
results = response.json()
print(results)
但是有一些嵌套的参数,例如,这是我可能查询的URL:
在上述情况下,我需要传递以下嵌套参数:
request[fields][description]
request[fields][sections]
这怎么实现?
答案 0 :(得分:0)
如果我正确阅读了this issue,则可以简单地使用方括号名称作为参数的键(请参见this comment):
import requests
parameters = {
'action': 'query_plugins',
'per_page': 10,
'browse': 1,
'page': 1,
'request[fields][description]': 0,
'request[fields][sections]': 0
}
response = requests.get('https://api.wordpress.org/plugins/info/1.1/', parameters)
results = response.json()
答案 1 :(得分:0)
您可以使用递归函数将参数从dict字典展平为API要求的方括号格式的键值对:
def params(name, parameters):
def flatten(d):
for k, v in d.items():
if isinstance(v, dict):
for s, i in flatten(v):
yield '[%s]%s' % (k, s), i
else:
yield '[%s]' % k, v
return {name + k: v for k, v in flatten(parameters)}
parameters = {
'per_page': 10,
'browse': 1,
'page': 1,
'fields': {
'description': 0,
'sections': 0
}
}
response = requests.get(
'https://api.wordpress.org/plugins/info/1.1/',
{'action': 'query_plugins', **params('request', parameters)}
)