You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Jira API的PUT请求更新自定义字段时遇构造方法错误

问题分析与解决

你的错误来自两个核心问题:双重JSON序列化,以及文本字段的赋值格式错误。

1. 双重序列化导致API无法解析

你写了data = json.dumps(json.dumps(data)),这会把数据变成字符串的字符串,Jira API接收到后会把外层字符串直接当成IssueUpdateBean的输入,自然找不到对应的构造方法,抛出你看到的错误。

正确的做法是只序列化一次,或者直接用requests的json参数自动处理序列化(更推荐)。

2. 文本字段的赋值格式错误

从/editmeta返回的schema可以看到,这个自定义字段是文本字段(textfield),类型是string,不是多值选项字段。你当前用的set: [{'value': 'xxx'}, {'value': 'xxx'}]是多选选项字段的格式,不适用于文本框。

文本字段只需要直接传入字符串值,如果要传多个Commit ID,用空格、逗号或者换行符拼接成单个字符串即可。

修正后的代码

import json
import requests

# 用逗号拼接多个Commit ID成单个字符串(分隔符可按需调整)
commit_ids = '1c1a07d49af1b1cde8a1a7bd93cbbeef8efd50c9, c6f1e31ce0138cba658f769accaac729bebc42d6'
data = {'update': {'customfield_25305': [{'set': commit_ids}]}}

# 推荐方案:用requests的json参数,自动处理序列化和Content-Type
upload = requests.put(url, headers=headers, json=data)

# 备选方案:手动序列化+指定Content-Type
# headers['Content-Type'] = 'application/json'
# data_str = json.dumps(data)
# upload = requests.put(url, headers=headers, data=data_str)

if upload.status_code == 204:
    print("更新成功")
else:
    print(upload.json())

额外验证点

  • 确保headers包含正确的授权信息(如Basic Auth或Bearer Token)
  • 确认url为正确的工单更新接口:https://你的Jira域名/rest/api/2/issue/工单KEY
  • 文本字段的分隔符可根据业务需求调整(比如换行符\n)

内容的提问来源于stack exchange,提问作者Tejas S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:01:18