无法从函数返回响应

时间:2018-08-01 08:45:36

标签: python json

我正在处理一个简单的脚本,以在将问题提交给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服务。

我在这里完全迷失了什么吗?

2 个答案:

答案 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需要键值对。由于您已将新问题变量解压缩到另一个字典中,因此类型可能不兼容。