我正在处理一个简单的脚本,以在将问题提交给JIRA之后返回JIRA案例ID。
我创建了一个问题函数,该函数从RESTful Web服务中获取JSON参数,然后将其传递给JIRA以自动创建案例。这是我编写的函数的一个片段:
def create_issue():
issue = {
'summary': request.json['summary'],
'project': request.json['project'],
'desc': request.json['desc'],
'issuetype': request.json['issuetype']
}
issue_dump= json.dumps(issue)
issue_source = json.loads(issue_dump)
summ = (issue_source["summary"])
proj = (issue_source["project"])
desc = (issue_source["desc"])
type = (issue_source["issuetype"])
print(f"{summ}")
print(f"{proj}")
print(f"{desc}")
print(f"{type}")
issue_dict = {
'project': proj,
'summary': summ,
'description':desc,
'issuetype':type,
}
new_issue = jira.create_issue(fields=issue_dict)
#Used to print response of new_issue
print(f"{new_issue}")
response = {'JIRA ID': new_issue}
return jsonify(response),201
我添加了print
的{{1}}语句,并且看到JIRA ID(例如ID-2)确实出现在控制台上,但是由于某种原因,当我尝试将其包含在JSON响应中时作为变量,我得到了Issue类型不是JSON可序列化的Object。我尝试用另一个定义的测试变量替换我的响应JSON中的new_issue
变量,并且效果很好。
我正在使用Flask托管Web服务。
我在这里完全迷失了什么吗?
答案 0 :(得分:1)
从Jira库背后的代码看来,create_issue方法返回了一个Issue对象,其中包含很多信息。尝试打印时,它会打印出它在对象中可以找到的第一个人类可读的值。
尝试以下方法:
response = {'JIRA ID': new_issue.key}
return jsonify(response),201
返回的Issue类的代码可以找到here,从第404行开始
答案 1 :(得分:0)
我无法添加评论。所以,请您分享一下new_issue返回的类型是什么。
print(type(new_issue))
JSON需要键值对。由于您已将新问题变量解压缩到另一个字典中,因此类型可能不兼容。