AttributeError:对象没有属性

时间:2016-12-02 06:00:25

标签: python json jira python-jira

我从以前的同事那里得到了一个程序,现在应该保留它。 这个python脚本向我们的Jira实例询问一个给定的jql(在API上)。 返回是与搜索条件匹配的所有问题的列表。 但现在它不起作用,我在服务器(Ubuntu)和我的本地Windows PC上收到一条Json错误消息。 注意:它没有运行大约一年,但当时它起作用了。

这是脚本的样子:

import json
import subprocess

jiraSerachUrl = "https://ourJiraInstance.net/rest/api/2/search?jql=key%20=%20%22TEST-123%22"
jiraResponse = subprocess.Popen(["curl","-l","-s","-u", "jiraUser"+":"+"jiraUserPassword", "-X", "GET", jiraSerachUrl ],stdout=subprocess.PIPE,shell=True).communicate()[0]
## shell=True only added for Windows Instance
print(type(jiraResponse))
##print =  <class 'bytes'>
print(jiraResponse)
## print = b''
jiraJsonResponse = json.loads(jiraResponse.decode('utf-8'))
print(jiraJsonResponse)

jql / jira搜索地址返回以下内容(简短回答,返回任务的所有字段):

  

{ “扩大”: “名称,模式”, “startAt”:0 “的maxResults”:50, “总”:1, “问题”:   [{ “扩展”: “操作,versionedRepresentations,editmeta,更新日志,转换,renderedFields”   “id”:“145936”,“self”:“https://ourJiraInstance.net/rest/api/2/issue/145936”,“key”:“TEST-123”,“fields”:{“parent”:...

Windows PC上的错误如下

  

Traceback(最近一次调用最后一次):文件   “C:\ Users \ User \ Desktop \ test.py”,第10行,中       jiraJsonResponse = json.loads(jiraResponse.decode('utf-8'))文件“C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ json__init __。py”,   第319行,载入中       return _default_decoder.decode(s)文件“C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ json \ decoder.py”,   第339行,在解码中       obj,end = self.raw_decode(s,idx = _w(s,0).end())文件“C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ json \ decoder。 PY”,   第357行,在raw_decode中       从无json.decoder.JSONDecodeError引出JSONDecodeError(“Expecting value”,s,err.value):期望值:第1行第1列(char   0)

这是Ubuntu服务器上的错误(运行相同的脚本)

  

回溯(最近一次调用最后一次):文件“searchJira.py”,第33行,中          jiraJsonResponse = json.loads(jiraResponse)文件“/usr/lib/python2.7/json/init.py”,第338行,载入中       return _default_decoder.decode(s)文件“/usr/lib/python2.7/json/decoder.py”,第366行,解码       obj,end = self.raw_decode(s,idx = _w(s,0).end())文件“/usr/lib/python2.7/json/decoder.py”,第384行,raw_decode       提高ValueError(“无JSON对象可被解码”)ValueError:无法解码JSON对象

到目前为止,我尝试将Json加载更改为simpleJson,但结果相同。 更改Json应解码的格式(例如unicode)不起作用。

1 个答案:

答案 0 :(得分:0)

我尝试了一下,最后得到了它。通过用响应替换curl,我最终得到了我想要的结果。我的请求现在看起来像这样:

r = requests.get(jiraSerachUrl,auth=HTTPBasicAuth(user, password), verify=False) 
jiraJsonResponse=json.loads(r.text)