如何在python请求中将嵌套字典作为头传递?

如何在python请求中将嵌套字典作为头传递?,python,json,python-requests,Python,Json,Python Requests,我的标题格式如下 import requests header = { "content-type": "application/json", "a": {"b": "b_value"}, "some_param": {"some_key_value": "some_string"}, } res = requests.post(url, json=z_data, headers=header) 我得到的错误是d

我的标题格式如下

import requests

header = {
          "content-type": "application/json",
          "a": {"b": "b_value"},
          "some_param": {"some_key_value": "some_string"},
         }

res = requests.post(url, json=z_data, headers=header)
我得到的错误是dictionary的值不能是dictionary。 我尝试使用
json.dumps()
,但它忽略了其中的内容


请帮助我解决这个错误。谢谢,

看起来参数应该是类似json的字符串。 使用json模块应该可以,但您可以尝试使用f字符串:

header = {
          "content-type": "application/json",
          "a": f'{{"b": {b_value} }}',
          "c": f'{{"d": {d_value} }}',
         }

这样,变量a和c是字符串,变量
b_值
d_值
将替换为其内容

看起来参数应该是类似json的字符串。 使用json模块应该可以,但您可以尝试使用f字符串:

header = {
          "content-type": "application/json",
          "a": f'{{"b": {b_value} }}',
          "c": f'{{"d": {d_value} }}',
         }

这样,变量a和c是字符串,变量
b_值
d_值
将替换为其内容

必须对参数进行json编码:

header = {
          "content-type": "application/json",
          "a": json.dumps({"b": "b_value"}),
          "some_param": json.dumps({"some_key_value": "some_string"})
         }
如果您收到预构建的
标题
字典,则必须对其进行预处理:

header = {
          "content-type": "application/json",
          "a": {"b": "b_value"},
          "some_param": {"some_key_value": "some_string"},
         }

...

header = {k: json.dumps(v) if isinstance(v, dict) else v for k,v in header.items()}
res = requests.post(url, json=z_data, headers=header)

必须对参数进行json编码:

header = {
          "content-type": "application/json",
          "a": json.dumps({"b": "b_value"}),
          "some_param": json.dumps({"some_key_value": "some_string"})
         }
如果您收到预构建的
标题
字典,则必须对其进行预处理:

header = {
          "content-type": "application/json",
          "a": {"b": "b_value"},
          "some_param": {"some_key_value": "some_string"},
         }

...

header = {k: json.dumps(v) if isinstance(v, dict) else v for k,v in header.items()}
res = requests.post(url, json=z_data, headers=header)

请求参数应该是什么?它们必须是字符串…解决方案实际上只取决于表单期望的post参数。那么,表单需要什么参数?@SergeBallesta是的,它们是字符串,我已经更新了question@user10987432它们是用户定义的参数。您不能在HTTP请求中传递字典。句号。HTTP协议要求任何参数都是字符串。因此,问题归结为您希望如何格式化字典?请求参数应该是什么?它们必须是字符串…解决方案实际上只取决于表单期望的post参数。那么,表单需要什么参数?@SergeBallesta是的,它们是字符串,我已经更新了question@user10987432它们是用户定义的参数。您不能在HTTP请求中传递字典。句号。HTTP协议要求任何参数都是字符串。因此,问题归结为您希望如何设置字典的格式?
b_值
d_值
是字符串,而不是可变的。在这种情况下,只需在那里放置一个字符串:
。。。“a:“{”b:“stringcontent”}”
b_值
d_值
是字符串,不可变。在这种情况下,只需在那里放一个字符串:
。。。“a:“{”b:“stringcontent”}”
我之前也使用了json.dumps(),但没有用。当将字典数据封装在
json.dumps()中时,它会被忽略。
。似乎这是我范围之外的其他问题。谢谢你的帮助,though@JohnDoe:应该是这样的。。。如果您在使用时遇到问题,请用a问一个新问题,并说明服务器是什么或它需要什么。我之前也使用了json.dumps(),但没有用。将字典数据封装在
json.dumps()
中时会忽略它。似乎这是我范围之外的其他问题。谢谢你的帮助,though@JohnDoe:应该是这样的。。。如果您在使用时遇到问题,请用a询问一个新问题,并说明服务器是什么或它需要什么。