我正面临一个问题。我必须解析包含来自Atlassian网站的jira-core版本的list的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块?
问题是,这不是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 }
虽然这不直接解决JSON与JSONP问题,但如果您只是想要使用Jira版本数据,还有一个名为iapetus.fyi的第三方网站提供Atlassian产品版本信息,包括向您的应用提供Firebase notifications的可能性用于版本更改事件。