【问题标题】:The output of OrderedDict has single quotes around it, and I want just the insides without single quotesOrderedDict 的输出周围有单引号,我只想要没有单引号的内部
【发布时间】:2018-11-30 11:45:49
【问题描述】:

所以我尝试在 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 进行编码,我很想知道您是否遇到过任何可能对我有用的文章/文档,以避免将来出现类似问题。再次感谢大家!

【问题讨论】:

  • 是的!我的意思是反应不好,其他一切都已经检查过了。所以它必须是这个。
  • 您显然缺少的是 json.dump() 返回一个字符串。 '{"name": 1, "value": 2}' 是检查时字符串的显示方式 - ' 只是不属于字符串的分隔符 - 错误必须在其他地方。
  • ...这就是 JSON 的全部意义——您以一种严格的格式将数据作为字符串传输,以便在另一端对其进行解析...
  • 值得注意的是:JSON 交换格式不提供任何键/值对的排序保证。如果键的顺序很重要,您将需要使用对象列表而不是单个对象来序列化为 JSON。

标签: python json string python-3.x python-requests


【解决方案1】:

requests 将为您编码数据。您应该可以将OrderedDict 直接传递给post

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

我希望这会有所帮助。


编辑:我意识到 another answer 可能会对您有所帮助,它建议在拨打 post 电话时使用 json 而不是 data

文档:

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

【讨论】:

  • 谢谢!我不是 100% 确定如何(我会确保阅读此内容),但 json = out 成功了!也许这是关于明确,这是我知道 Python 喜欢的。
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多