Python:Json转储转义引用

时间:2016-09-10 13:26:47

标签: 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请求的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"}相同的格式?

1 个答案:

答案 0 :(得分:1)

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

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

    1. 替换json.dumps输出上的空格:json.dumps({"styleId":"BMHSUR2HTS"}).replace(': ', ':')
    2. 使用eval()将所有内容转换为json:eval(json.dumps({"styleId":"BMHSUR2HTS"}))eval(YOUR_JSON_STRING)
    3. 我希望这会对你有所帮助。