我有一个嵌套字典,我想将其传递给 Web 服务(用 PHP 编写),但我很困难,因为我无法访问所需的数据。
字典看起来像
import requests
from nested_dict import nested_dict
data = nested_dict()
data['name'] = 'test'
data['cookies']['PHPSESSID']['name'] = 'PHPSESSID'
data['cookies']['PHPSESSID']['essential'] = 'Essential'
data['cookies']['CookieNotice']['name'] = 'CookieNotice'
data['cookies']['CookieNotice']['essential'] = 'Essential'
然后我提出我的要求:
r = requests.post('someurl.com', data = data)
在接收url someurl.com(用PHP编写)中,我可以毫无问题地访问第一级,例如
header('Content-Type: application/json');
$data = $_REQUEST;
$response['content'] = $data['name'];
$response = $response['content'];
echo json_encode($response);
问题是试图访问嵌套字典中的数据。我不知道当它到达 someurl.com 时会以什么形式到达,因此我无法使用它来生成循环。我想做的是这样的:
header('Content-Type: application/json');
$data = $_REQUEST;
$response['content'] = $data['name'];
foreach ($data['cookies'] as $k => $v):
$response['content'] .= $k." ".$v;
endforeach;
$response = $response['content'];
echo json_encode($response);
当在模板中打印出响应时,嵌套部分会出现内容......
非常感谢任何帮助!
更新
我已经尝试了很多排列,但仍然很挣扎!我只需要能够将嵌套字典(或 json)传递到我的接收网址“someurl.com”,并能够在 PHP 中对其进行(json)解码,例如 $d = json_decode($_POST)
这“有效”,但我无法对响应“做”任何事情:
dat = json.dumps(data)
req = requests.get('someurl.com',params=dat)
尝试使用 requests.post 时,如果我传递原始字典或将其转换为 json,我将无法执行任何操作。
非常感谢
最佳答案
对于 Python requests 模块来说,这是不好的:
requests.post(url, data=nested_dict)
好:
requests.post(url, json=nested_dict)
注意:nested_dict
不需要字符串化。只需将其作为字典传递即可。
关于python - 将嵌套字典传递给请求模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193316/