【问题标题】:Python - Json & RequestsPython - Json 和请求
【发布时间】:2014-03-10 10:49:52
【问题描述】:
import requests
import json

url='http://test.com/job/MY_JOB_NAME/build'
params={'name':'BRANCH', 'value':'master', 'name':'GITURL', 'value':'https://github.test.com/test/test.git'}
payload = json.dumps(params)
print payload
resp = requests.post(url=url, data=payload)

由于某种原因,请求没有成功执行,所以我打印了有效负载以查看哪些参数作为 json 传递,我得到了这个:

{"name": "GITURL", "value": "https://github.scm.corp.ebay.com/RPS/RPS.git"}

为什么我的有效载荷缺少前 2 个 json 键值对?

【问题讨论】:

  • 字典只存储唯一键。

标签: python json python-2.7 dictionary python-requests


【解决方案1】:

您有两个相同的密钥,namevalue

更改名称。

params={'branch':'BRANCH', 'tree':'master', 'name':'GITURL', 'value':'https://github.test.com/test/test.git'}

JSON 就像 Python 中的字典。 它们基于 Key = Value 进行匹配,每个键都是一个 uiniqiue 标识符。

x = {}
x['elephant'] = 1

如果另一头大象出现,

x['elephant'] += 1

但你不能这样做:

x['elephant'] = 'has a trunk'

因为,然后您将大象的数量替换为它们的外观。

【讨论】:

  • 如果我想重复两次相同的键怎么办?还有其他选择吗?
【解决方案2】:

不是json.dumps的问题。

dict 文字中,存在相同的键。键应该是唯一的。

>>> {'a': 'b', 'a': 'c'}
{'a': 'c'}

使用不同的键,或将值作为列表:

>>> {'a1': 'b', 'a2': 'c'}
{'a1': 'b', 'a2': 'c'}
>>> {'a': ['b' ,'c']}
{'a': ['b', 'c']}

或使用字典列表:

>>> [{'a': 'b'}, {'a': 'c'}]
[{'a': 'b'}, {'a': 'c'}]

【讨论】:

  • 如果我想重复两次相同的键怎么办?还有其他选择吗?
  • @PiHorse,你不能(用一本字典)。
  • @PiHorse,我添加了一个使用 list 和字典项的替代方案。
  • 我试过了,但是它改变了我在发出请求的参数中需要的 json 格式。
  • @PiHorse,JSON 字典(哈希表,对象)也要求键是唯一的。
猜你喜欢
  • 2021-12-04
  • 2022-07-27
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 2013-10-26
  • 2011-09-17
相关资源
最近更新 更多