从特定的Jira问题中获取字段

16

我正试图从我的代码中获取特定问题的所有字段和值:

authenticated_jira = JIRA(options={'server': self.jira_server}, basic_auth=(self.jira_username, self.jira_password))
issue = authenticated_jira.issue(self.id) 
print issue.fields()

它不返回字段列表,而是返回:

<jira.resources.PropertyHolder object at 0x108431390>
5个回答

38
authenticated_jira = JIRA(options={'server': self.jira_server}, basic_auth=(self.jira_username, self.jira_password))
issue = authenticated_jira.issue(self.id) 

for field_name in issue.raw['fields']:
    print "Field:", field_name, "Value:", issue.raw['fields'][field_name]

根据字段类型的不同,有时你会获得一个字典作为值,然后你必须找到你想要的实际值。


3
没错,就像我回答的那样解决问题。 - Kobi K

14

使用方法:

print self.issue_object.raw

返回原始的 JSON 字典,可以进行迭代和操作。


5
您可以使用issue.fields.customfield_#,这种方式直接访问字段值,避免了通过 .raw fields 进行解析的不可靠性。几乎所有的东西都有一个相关的customfield。您可以从REST API中获取自定义字段号,或者使用.raw得到的一些字段将具有类似于“customfield_11111”的自定义字段id,这就是您将要使用的内容。如果您使用issue.raw['fields']['desired_field'],则间接访问字段值,因为返回的结果不一致,您会得到字符串列表、字符串本身以及没有键让您访问它们的直接值,所以您必须迭代、计算位置,然后解析获取值,这样是不可靠的。

0

使用 @kobi-k 的答案,但以更好的格式输出,我使用了以下代码:

 with open("fields.txt", "w") as f:
   json.dump(issue.raw, f, indent=4)

它将所有字段都倒入了一个名为“fields.txt”的文件中


0

您可以通过 PropertyHolder 使用 dict 来访问属性:

jira = JIRA(server, basic_auth=(email, token), options={"headers": {"User-Agent": user_agent("my_package", "0.0.1")}})
jp = jira.project(project)

jp.avatarUrls.__dict__['48x48']


Out[20]: 'https://*****.atlassian.net/rest/api/2/universal_avatar/view/type/project/avatar/10414'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接