首页 > 解决方案 > 如何从 Atlassian 网站解析 jira 版本

问题描述

我面临一个问题。我必须从 Atlassian 网站解析 JSON 包含的 jira-core 版本列表

尝试使用 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 块?

标签: groovyjirajenkins-groovy

解决方案


问题是,这不是 json ......这是一个 jsonp 回调,所以有效的 json 被包装在一个downloads( ... )javascript 调用中

您可以使用正则表达式从 URL 中解开文本:

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 }

推荐阅读