当应该返回json obj或string时,curl命令返回int

时间:2015-06-24 15:46:56

标签: python json curl jira

所以我有一个问题,我对JIRA的curl GET命令是有效的,但是返回一个int而不是一个json或字符串。当我在命令行中输入它时会有一个响应(将json obj的字符串表示打印到stdout(| python -m json.tool))。这是线路以及它返回的内容......

cmd1 = 'curl -X GET -H "Authorization: Basic ' + auth +' " -H "Content-Type: 
application/json" https://jira.something-something.net/rest/api/latest/search?
jql=assignee=qa-auto' # | python -m json.tool'

这是使用它的地方......

print cls.cmd1
print bug.encoded
print subprocess.call(cls.cmd1, shell=True)
req_all = subprocess.call(cls.cmd1, shell=True)
print req_all
print str(req_all.__class__)

这就是回应......

curl -X GET -H "Authorization: Basic authkey " -H "Content-Type: 
    application/json" https://jira.something-
    something.net/rest/api/latest/search?
    jql=assignee=qa-auto
"{'fields': {'environment': [['- \\n', '- Repeated : 0 times']], 
    'description': [[]], 'summary': ['Fill in'], 'project': ['QA Automated Bug 
    Logger'], 'assignee': ['qa-auto'], 'issuetype': ['Bug'], 'priority': 
    ['Major']}}"
0
0
<type 'int'> # The class of req_all, which == return value of subprocess.call(cls.cmd1)

我希望它能返回这样的东西......

{"fields": {
        "project": [self.project],
        "issuetype": [self.issue_type],
        "priority": [self.priority],
        "assignee": [self.assignee],
        "environment": [self.environment],
        "description": [self.description],
        "summary": [self.summary] } }

这是我遍历所有返回的问题的地方(首先需要获得json obj以使其工作)...

# for each job create a percentage similarity
for jobj in req_all:

有人可以帮我弄清楚如何让这个curl命令返回一个有效的json对象或json字符串表示吗?谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

尝试接收如下输出:

req_all = subprocess.call(cls.cmd1, shell=True, stdout=subprocess.PIPE)
(out, err) = req_all.communicate()
print out

如果有效,请告诉我。从那里,你应该能够使用内部的json python库来转换它,或者使用simplejson。