You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Python结合Jira Rest API从JSON提取指定状态缺陷的报告人信息

嘿,我来帮你搞定从JIRA返回的结果里提取你要的信息!分两种常见情况给你讲,对应你代码里用到的工具:

提取目标信息的方法

如果你用的是官方jira Python库(你的代码里已经导入了)

当你执行搜索后,得到的是Issue对象的列表,直接从对象里取字段就行,不用手动解析JSON。先补全你的代码,然后提取信息:

# 先完成JIRA认证(用你的用户名+密码/API Token)
jira = JIRA(server=serverURL, basic_auth=('你的用户名', '你的认证信息'))

# 补全你的JQL查询语句,确保条件完整
query = 'project = SWDEV AND issuetype = Defect AND status in (Implemented, Rejected) AND "Deliverable ID" = "17.50 Sustaining [969960]"'

# 执行查询获取Issue列表
issues = jira.search_issues(query)

# 遍历每个Issue提取你要的信息
for issue in issues:
    # 问题核心标识和摘要
    issue_key = issue.key
    issue_summary = issue.fields.summary
    
    # 报告人姓名和邮箱
    reporter_name = issue.fields.reporter.displayName
    reporter_email = issue.fields.reporter.emailAddress
    
    # 验证状态(可选,因为查询已经过滤了)
    issue_status = issue.fields.status.name
    
    # 提取自定义字段「Deliverable ID」
    # 注意:JIRA自定义字段在API里用「customfield_XXXXXX」格式,你需要替换成实际的字段ID
    # 怎么找ID?可以用jira.fields()打印所有字段,找到对应「Deliverable ID」的ID
    deliverable_id = issue.fields.customfield_XXXXXX

    # 输出或者存储信息,这里用打印示例
    print(f"问题Key: {issue_key}")
    print(f"摘要: {issue_summary}")
    print(f"报告人姓名: {reporter_name}")
    print(f"报告人邮箱: {reporter_email}")
    print(f"状态: {issue_status}")
    print(f"Deliverable ID: {deliverable_id}")
    print("---")

如果你是直接调用JIRA REST API拿到JSON数据(比如用requests

如果是通过requests发请求得到的JSON响应,那要按JSON的层级来解析:

import requests
import urllib
import base64

# 配置请求头和URL
headers = {
    "Authorization": "Basic " + base64.b64encode(b"你的用户名:你的认证信息").decode('utf-8'),
    "Content-Type": "application/json"
}
# 补全JQL并转义
query = 'project = SWDEV AND issuetype = Defect AND status in (Implemented, Rejected) AND "Deliverable ID" = "17.50 Sustaining [969960]"'
encoded_query = urllib.parse.quote(query)
url = f"{serverURL}/rest/api/2/search?jql={encoded_query}"

# 发送请求获取JSON数据
response = requests.get(url, headers=headers)
json_data = response.json()

# 遍历JSON里的issues数组提取信息
for issue in json_data['issues']:
    issue_key = issue['key']
    issue_summary = issue['fields']['summary']
    
    # 报告人信息
    reporter_name = issue['fields']['reporter']['displayName']
    reporter_email = issue['fields']['reporter']['emailAddress']
    
    # 状态信息
    issue_status = issue['fields']['status']['name']
    
    # 自定义字段「Deliverable ID」,替换成实际的customfield_XXXXXX
    deliverable_id = issue['fields']['customfield_XXXXXX']

    # 输出信息
    print(f"问题Key: {issue_key}")
    print(f"摘要: {issue_summary}")
    print(f"报告人姓名: {reporter_name}")
    print(f"报告人邮箱: {reporter_email}")
    print(f"状态: {issue_status}")
    print(f"Deliverable ID: {deliverable_id}")
    print("---")

小技巧

  • 关于自定义字段Deliverable ID的ID:你可以通过这两种方式找:
    1. jira.fields()方法(官方库)打印所有字段,搜索「Deliverable ID」对应的id值;
    2. 随便打开一个包含该字段的JIRA问题,查看页面源代码或者API响应,找到对应字段的键。
  • 记得把你的JQL查询补全,不要留"T...这样的截断内容哦!

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

火山引擎 最新活动