Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:Json转储转义引号_Python_Json - Fatal编程技术网

Python:Json转储转义引号

Python:Json转储转义引号,python,json,Python,Json,当我传递以下数据时,有一个POST请求非常有效: url = 'https://www.nnnow.com/api/product/details' requests.post(url, data="{\"styleId\":\"BMHSUR2HTS\"}", headers=headers) 但是,当我在字典上使用json.dumps()并发送响应时,我不会使用headers={'Content-Type':'application/json'}得到响应(响应代码504)。还尝试了Post

当我传递以下数据时,有一个POST请求非常有效:

url = 'https://www.nnnow.com/api/product/details'

requests.post(url, data="{\"styleId\":\"BMHSUR2HTS\"}", headers=headers)
但是,当我在字典上使用
json.dumps()
并发送响应时,我不会使用
headers={'Content-Type':'application/json'}
得到响应(响应代码504)。还尝试了Post请求的json参数

requests.post(url, data=json.dumps({"styleId":"BMHSUR2HTS"}), headers={'content-type': 'application/json'})
现在,
json.dumps({“styleId”:“BMHSUR2HTS”})返回的数据
“{\“styleId\”:\“BMHSUR2HTS\”}”
是不同的

json.dumps({“styleId”:“BMHSUR2HTS”})=“{\“styleId\:\“BMHSUR2HTS\”}”
给出
False
,即使两者上的打印显示类似的字符串


如何从字典
{“styleId:“BMHSUR2HTS”}
中获得与
{“styleId:“BMHSUR2HTS”}
相同的格式?

如果打印
json.dumps({“styleId:“BMHSUR2HTS”})
,您会注意到两件事:

  • 您的输出是一个字符串(只需尝试
    类型(json.dumps({“styleId”:“BMHSUR2HTS”}))
  • 如果您注意,输出将在json名称和值之间添加一个空格:
    {“styleId”:“BMHSURT2HTS”}
  • 不确定您希望如何处理此问题,以及您的输入代码,但有两个解决此问题的主要选项:

  • 替换json.dumps输出上的空格:
    json.dumps({“styleId”:“BMHSUR2HTS”})。替换(“:”,“:”)
  • 使用eval()将所有内容转换为json:
    eval(json.dumps({“styleId”:“BMHSUR2HTS”}))
    eval(您的json字符串)

  • 我希望这能对您有所帮助。

    字符串与
    json.dumps的结果之间的唯一区别是后者会在冒号后面加一个空格;这在JSON中并不重要,也不是问题的原因。当您只传递实际的
    dict
    时会发生什么?例如,
    requests.post(url,data={“styleId”:“BMHSUR2HTS”},headers=headers)
    。这就是示例中使用的表单。您可以使用
    json.dumps({“styleId”:“BMHSUR2HTS”},分隔符=(',',':'))
    获得相同的结果,但我不明白为什么它不能工作,因为that@DanielRoseman:我添加了url,这样您也可以看到它不适用于
    json。dumps
    当您使用
    分隔符时,它可以工作=(“,”,“:”)
    ,他们可能正在使用一个奇怪的解析器。。。