首页 > 解决方案 > OrderedDict 的输出周围有单引号,我只想要没有单引号的内部

问题描述

所以我试图在 json.dumps() 中使用 OrderedDict 并且它开始运行良好。但是,当尝试直接在 HTTP PUT 请求的有效负载中使用输出时,它周围有这些单引号,我认为这与在接收端解释 json 的方式有关。

那么我该如何解决这个问题并让它给我没有单引号的输出呢?

例子:

out = json.dumps(OrderedDict([("name", 1), ("value", 2)]))

...给出一个输出,例如:

'{"name": 1, "value": 2}'

...当我想让它给我肉时,json,比如:

{"name": 1, "value": 2}

...这样我就可以把它直接放进我的

r = requests.post(url, data = out)

...并在我快乐的路上。

顺便说一句:我完全缺少关于字符串和字符串文字(无论是什么)的一些非常基本的东西吗?我的 Python 知识是自学的,我确信存在一些差距。

编辑: print(out)

...给

{"name": 1, "value": 2}

这就是我相信我想要的。

EDIT2:json = out正如所选答案中提到的那样,谢谢!但是,由于我刚刚开始使用 Python 进行编码,我很想知道您是否遇到过任何可能对我有用的文章/文档,以避免将来出现类似问题。再次感谢大家!

标签: pythonjsonstringpython-3.xpython-requests

解决方案


requests将为您编码数据。您应该能够OrderedDict直接将其传递给post

out = OrderedDict([("name", 1), ("value", 2)])
r = requests.post(url, json=out)

我希望这有帮助。


编辑:我意识到还有另一个答案可能对您有所帮助,它建议在拨打电话时使用json而不是。datapost

文档:

http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests


推荐阅读