我从以前的同事那里得到了一个程序,现在应该保留它。 这个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)不起作用。
答案 0 :(得分:0)
我尝试了一下,最后得到了它。通过用响应替换curl,我最终得到了我想要的结果。我的请求现在看起来像这样:
r = requests.get(jiraSerachUrl,auth=HTTPBasicAuth(user, password), verify=False)
jiraJsonResponse=json.loads(r.text)