如何从Atlassian网站解析吉拉版本

时间:2019-04-05 09:03:03

标签: groovy jira jenkins-groovy

我遇到了问题。 我必须从Atlassian网站解析包含list的jira-core版本的JSON。

尝试使用JsonSlurper从网站解析JSON时,出现错误消息:

  

“当前读取的字符为'd',其int值为100。   确定当前字符,它不是字符串,数字,数组,   或对象行号1索引号0“

代码:

def http = new HTTPBuilder('https://my.atlassian.com/download/feeds/')
def html = http.get( path : 'current/jira-core.json')
def slurper = new groovy.json.JsonSlurper(type: JsonParserType.LAX).parse(html)
print slurper

我该如何获取正确的JSON块?

2 个答案:

答案 0 :(得分:1)

问题是,这不是json ...这是jsonp回调,因此有效的json包装在downloads( ... ) javascript调用中

您可以使用正则表达式通过以下方式从网址中解开文本:

import groovy.json.*

def jsonp = new URL('https://my.atlassian.com/download/feeds/current/jira-core.json').text
def extract = jsonp =~ /^downloads\((.+)\)$/
if (!extract.matches()) {
    throw new RuntimeException("Bad jsonp!")
}
def parsed = new JsonSlurper().parseText(extract.group(1))

parsed.each { println it.description }

答案 1 :(得分:0)

虽然这不能直接解决JSON与JSONP问题,但是,如果您只是想使用Jira版本数据,那么还有一个名为iapetus.fyi的第三方站点可以提供Atlassian产品版本信息,包括可以为您的应用提供Firebase notifications来进行版本更改事件。