jira-python: updating issue version field gives 'TypeError: <object> is not JSON serializable error

jira-python: updating issue version field gives 'TypeError: <object> is not JSON serializable error

我正在尝试使用 jira-python.

更新基本上是版本字段的自定义字段

我可以毫不费力地获取项目的版本集,找到要设置的正确版本,但实际上我遇到的问题是更新此自定义版本字段。

以下是一些相关代码:

pl = jira.project('PL')
versions = jira.project_versions(pl)

# assume the function below returns list of issues I want to update
issues = query_resolved_issues()
for i in issues:
    # assume this function selects the right version in versions
    update_version = get_right_version(i, versions)
    i.update(customfield_10303=update_version)

更新行出现错误:

  File "/usr/local/lib/python2.7/site-packages/jira/resources.py", line 352, in update
    super(Issue, self).update(async=async, jira=jira, fields=data)
  File "/usr/local/lib/python2.7/site-packages/jira/resources.py", line 148, in update
    data = json.dumps(data)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
    return _default_encoder.encode(obj)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <JIRA Version: name=u'IT79 - 6/11/15', id=u'12902'> is not JSON serializable

我确保存储在自定义字段中的值应该是版本对象本身(就像我在 JIRA 上的一个问题上手动设置发布版本并在这种情况下获取 customfield_10303 的值我 return 与我在更新期间尝试将对象设置为相同的对象类型。有人有想法吗?

基于 How do you set the fixVersion field using jira-python 应该是这样的:

i.update(fields={ 'customfield_10303' : [{'id': update_version['id']}] })